您好我一直在努力将我对JQuery的了解提升到一个新的水平,到目前为止,我认为我已经理解了所有内容,但是当我冒险学习更高级的教程时,我注意到了JQuery例程的几个实例包装在一个闭包中(见下文)但是,令我困惑的是它传递$并返回JQuery。我的问题是为什么?我可以用返回的JQuery做什么?
我真的很感激人们可以为我提供的任何亮点。
(function($){
$(document).ready(function(){
var arr = $.map($("LI"), function(item, index){
while (index < 3)
{
return $(item).html();
}
return null;
});
$(document.body).append("<span>The first three authors are: " +
arr.join(", ") + "</span>");
});
})(jQuery);
提前谢谢。
罗布
答案 0 :(得分:7)
它是一个自调用匿名函数(声明并立即执行的未命名函数),它接受一个参数,该参数被赋值给参数$
。传递给参数的值是jQuery
,即jQuery函数。
这样做是为了在函数范围内使用简写$
来表示jQuery。由于函数内部的所有代码都在函数的范围内,因此对于包含代码而不污染全局命名空间的self来说,这是一个很好的模式。
这也是一个很好的模式,允许你在函数内部使用$
简写为jQuery - 可能是$
简写(window.$
)被分配的东西否则,如果您在一个页面上使用多个库,就会发生这种情况。通过使用该模式,您仍然可以使用$
来引用函数中的jQuery
对象,以获得熟悉和简洁。
答案 1 :(得分:4)
如果您正在编写插件,请使用
(function($) {
//stuff that uses the jquery lib using $
})(jQuery);
这相当于
var __myf = function($) {
//stuff that uses the jquery lib using $
};
__myf(jQuery);
如果您正在编写页码,请使用
jQuery(function($) {
//stuff that uses the jquery lib using $
});
在这里,jQuery将在它准备好时(当文档加载时)调用你的函数,并将自己作为函数的第一个参数传递。
答案 2 :(得分:1)
这会将jQuery映射到$以获取闭包的范围,从而防止与其他可能声称$ namespace的库(例如MooTools)发生冲突。