调用jQuery并传递变量进行“无冲突”代码的(window).load

7

我最近学到了一种非常方便的技巧,可以让你在jQuery函数中传递$,从而使所有包含的代码处于无冲突模式。优点是你可以使用'$'而不是'jQuery'编写所有包含的代码。

以下代码可以正常工作...

jQuery(document).ready(function( $ ) {
// My code
});

这段代码不起作用...

jQuery(window).load(function( $ ){
// My code
});

它显示“$不是一个函数”。我该怎么做才能让它工作?
1个回答

15
创建一个(匿名的)自执行函数,并按如下所示传递jQuery对象:
(function($){  //This functions first parameter is named $
   $(window).load(function(){
       // Your code
   });
})(jQuery);    //Passing the jQuery object as a first argument

为什么需要这个?即使在使用无冲突模式下的document.ready时,你是否应该总是使用它? - jjeaton
3
通过使用上述的闭包,您可以确保该函数内部的 $ 总是指向那个时刻的 jQuery 对象(否则,$ 可能在后面被覆盖,导致不可预测的错误)。问题的实际问题在于,OP 假设在 .load(function($) ... ) 中的 $ 是一个 jQuery 对象(事实并非如此 - 请参阅.load()http://api.jquery.com/load/ 的文档)。第一个示例可以工作,因为它实际上是 .ready 文档中记录的功能,请再次阅读文档:http://api.jquery.com/ready/ - Rob W

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接