wes*_*bos 65 javascript jquery
我有一个功能,可以从网址中删除youtube id.然后我想每页使用此功能10次(在wordpress循环中).
当我在我的函数脚本标记中提供url时,该函数很有用,但是当我在循环中启动一组新的脚本标记时,它不起作用.
我需要知道如何在不首先声明所有功能的情况下使用我的功能.
所以这是我在标题中的代码:
<script type="text/javascript">
$(document).ready(function() {
var getList = function(url, gkey){
var returned = null;
if (url.indexOf("?") != -1){
var list = url.split("?")[1].split("&"),
gets = [];
for (var ind in list){
var kv = list[ind].split("=");
if (kv.length>0)
gets[kv[0]] = kv[1];
}
returned = gets;
if (typeof gkey != "undefined")
if (typeof gets[gkey] != "undefined")
returned = gets[gkey];
}
return returned;
};
// THIS WORKS
alert(getList('http://www.youtube.com/watch?v=dm4J5dAUnR4', "v"));
});
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在页面上的其他地方使用它时,它不起作用.
<script type="text/javascript">
$(document).ready(function() {
alert(getList('http://www.youtube.com/watch?v=dm4J5dAUnR4', "v"));
};
</script>
Run Code Online (Sandbox Code Playgroud)
Firebug给我getList没有定义哪个有意义,因为它没有.我可以'全局'宣布这个功能吗?
And*_*y E 101
您有两个选项,将其添加到window对象以使其成为全局:
window.getList = function(url, gkey){
// etc...
}
Run Code Online (Sandbox Code Playgroud)
或者将它从文档就绪事件处理程序内部移动到全局范围:
$(document).ready(function() {
alert(getList('http://www.youtube.com/watch?v=dm4J5dAUnR4', "v"));
});
var getList = function(url, gkey){
var returned = null;
if (url.indexOf("?") != -1){
var list = url.split("?")[1].split("&"),
gets = [];
for (var ind in list){
var kv = list[ind].split("=");
if (kv.length>0)
gets[kv[0]] = kv[1];
}
returned = gets;
if (typeof gkey != "undefined")
if (typeof gets[gkey] != "undefined")
returned = gets[gkey];
}
return returned;
};
Run Code Online (Sandbox Code Playgroud)
您可能还想阅读有关使用vs的这个问题,以及有关变量范围的本文.var functionName = function () {}function functionName() {}
Poi*_*nty 44
另一种选择是将函数挂起jQuery对象本身.这样就可以避免进一步污染全局名称空间:
jQuery.getlist = function getlist(url, gkey) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
然后你可以用"$ .getlist(url,key)"来获取它
小智 8
在ready()函数之外声明getList()..
var getList = function(url, gkey){
var returned = null;
if (url.indexOf("?") !=
....
....
...
};
Run Code Online (Sandbox Code Playgroud)
现在,getList可以在代码中的任何位置工作:
$(document).ready( function() {
alert(getList('http://www.youtube.com/watch?v=dm4J5dAUnR4', "v"));
});
Run Code Online (Sandbox Code Playgroud)
问题是,getList(.)函数的范围.
您可以简单地将函数添加到$.fn变量中:
(function ($) {
$.fn.getList = function() {
// ...
};
}(jQuery));
Run Code Online (Sandbox Code Playgroud)
用法示例:
$().getList();
Run Code Online (Sandbox Code Playgroud)
这是您在为 jQuery 创建基本插件时通常会执行的操作。
| 归档时间: |
|
| 查看次数: |
76237 次 |
| 最近记录: |