根据jQuery在线文档,如果我们想避免命名冲突,我们可以编写如下脚本:
jQuery(document).ready(function($) {
// Code using $ as usual goes here.
});
虽然我觉得以下方法更容易理解:
(function($){ //function to create private scope with $ parameter
//private scope and using $ without worry of conflict
})(jQuery); //invoke nameless function and pass it the jQuery object
第一种方法对我来说似乎更难消费。我的猜测是(使用第一种方法)后面的匿名函数将在场景后面调用,它将 jQuery 作为参数。
但我不确定我的想法是否正确。有人可以帮助我吗? 谢谢。
答案 0 :(得分:4)
前者与后者不同。你不应该试图将它们等同起来:
示例#2(function($) ...
)是一个纯JavaScript构造。它是一个匿名函数,以jQuery
作为参数立即调用,$
作为参数(解析为传入的jQuery
参数)。
示例#1具体为jQuery
。 jQuery
的内部工作方式使得传递给document.ready
函数的第一个参数本身就是jQuery
,你可以随意命名(在这种情况下,{{1} }})。请注意,$
也有自己独特的功能!它可能与示例#2
我建议您将所有JavaScript放在HTML jQuery(document).ready
之前。在这种情况下,上述两个例子应该或多或少地相同。
如@elclanrs所示,您也可以使用</body>
。返回值将充当新的jQuery.noConflict()
变量。有些人喜欢使用jQuery
。