在iife中理解$ vs. jQuery而不是$

Jas*_*son 9 jquery iife

我想了解是否有任何区别:

(function($){

...

})(jQuery);
Run Code Online (Sandbox Code Playgroud)

(function($){

...

})($);
Run Code Online (Sandbox Code Playgroud)

注意jQuery被替换为$.这个可以吗?它不能在任何地方使用,因为它无法工作?它可以工作,但也许是非标准的?有人可以解释一下这是错误还是可以?谢谢

Flo*_*ker 15

其他JavaScript框架也可以使用$作为快捷方式.为了保证$是函数内部的jQuery,最后传递jQuery而不是$.这种定义函数或"代码区域"的类型是确保在混合框架时$ is真的是jQuery.


Tat*_*nit 6

许多JavaScript库使用$作为函数或变量名,就像jQuery一样.在jQuery的情况下,$只是jQuery的别名,因此所有功能都可以在不使用$的情况下使用.如果我们需要在jQuery旁边使用另一个JavaScript库,我们可以通过调用$ .noConflict()将$的控制权返回给另一个库:

http://api.jquery.com/jQuery.noConflict/

在"无争议"模式下,$快捷方式不可用,并且使用了更长的jQuery.例如:

$(document).ready(function(){
     $(#somefunction) ...
});
Run Code Online (Sandbox Code Playgroud)

变为:

jQuery(document).ready(function(){
    jQuery(#somefunction) ...
});
Run Code Online (Sandbox Code Playgroud)

为了使用$的默认jQuery快捷方式,您可以在代码周围使用以下包装器:

jQuery(document).ready(function($) {
    // $() will work as an alias for jQuery() inside of this function
});
Run Code Online (Sandbox Code Playgroud)

该包装将导致您的代码在页面加载完成时执行,而$将用于调用jQuery.如果由于某种原因,您希望您的代码立即执行(而不是等待DOM ready事件),那么您可以使用此包装器方法:

(function($) {
    // $() will work as an alias for jQuery() inside of this function
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

好读: http ://codex.wordpress.org/Function_Reference/wp_enqueue_script#jQuery_noConflict_wrappers

如果你热衷于:

$ j在jQuery中意味着什么?

这应该有助于解渴,:)也许希望这有帮助!