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

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

(function($){ ... })(jQuery); 

 (function($){ ... })($); 

注意jQuery被替换为$。 这个可以吗? 它是否在任何地方都没有使用,因为它不起作用? 它可以工作,但也许它是非标准的? 有人可以解释一下,如果是错误或可以吗? 谢谢

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

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

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

在“无混淆”模式下,$快捷方式不可用,并且使用了更长的jQuery。 例如:

 $(document).ready(function(){ $(#somefunction) ... }); 

变为:

 jQuery(document).ready(function(){ jQuery(#somefunction) ... }); 

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

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

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

 (function($) { // $() will work as an alias for jQuery() inside of this function })(jQuery); 

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

如果你热衷于:

在jQuery中$是什么意思?

这应该有助于解渴:)可能希望这有帮助!

有。
$只是jQuery的一个快捷方式 。 它没有定义lib,因此它也可以被其他框架使用。
考虑这种情况:

 // remove the jQuery shortcut ($ === undefined) var j = jQuery.noConflict(); // redefine the dollar sign window.$ = function(){ // some other plugin } // case A (function($){ alert(jQuery === $);//true })(jQuery) // case B (function($){ alert(jQuery === $);//false })($) 

你的第二个例子是多余的。 如果你可以使用$传递jQuery,那么$已经是jQuery,即你可能刚刚写道:

 (function(){ $('#selectme'); })(); 

第一个例子,如果你想在noConflict模式下使用jQuery,但仍然使用$来引用选择的代码段中的jQuery,这是值得的。 否则,你在技术上甚至不需要关闭(尽管由于许多其他原因,关闭是很好的做法)。