在(窗口).load上调用jQuery并为"No Conflict"代码传递变量

fir*_*ion 7 jquery window-load

我最近学到了一个非常方便的技巧,它允许你在jQuery函数中传递$,这样你所包含的所有代码都处于No Conflict模式.优点是您可以使用'$'而不是'jQuery'来编写所有包含的代码.

这段代码工作得很好......

jQuery(document).ready(function( $ ) {
// My code
});
Run Code Online (Sandbox Code Playgroud)

这段代码不起作用......

jQuery(window).load(function( $ ){
// My code
});
Run Code Online (Sandbox Code Playgroud)

它说'$不是一个功能'.如何让它工作?

Rob*_*b W 15

创建一个(匿名)自调用函数,并传递jQuery如下所示的对象:

(function($){  //This functions first parameter is named $
   $(window).load(function(){
       // Your code
   });
})(jQuery);    //Passing the jQuery object as a first argument
Run Code Online (Sandbox Code Playgroud)

  • @jjeaton通过使用如上所示的闭包,您100%确定该函数内部的`$`总是在那时引用jQuery对象(否则,`$`可能会在以后被覆盖,导致不可预测的错误) .问题中的实际问题是OP假定`.load(function($)...)`中的`$`是一个jQuery对象(不是 - 请参阅[.load()`的文档] ()http://api.jquery.com/load/).第一个例子有效,因为它实际上是`.ready`的文档特征,再次阅读文档:http://api.jquery.com/ready/ (3认同)