别名jQuery命名空间

时间:2012-11-14 04:39:08

标签: jquery

根据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 作为参数。

但我不确定我的想法是否正确。有人可以帮助我吗? 谢谢。

1 个答案:

答案 0 :(得分:4)

前者与后者不同。你不应该试图将它们等同起来:

  • 示例#2(function($) ...)是一个纯JavaScript构造。它是一个匿名函数,以jQuery作为参数立即调用,$作为参数(解析为传入的jQuery参数)。

  • 示例#1具体为jQueryjQuery的内部工作方式使得传递给document.ready函数的第一个参数本身就是jQuery,你可以随意命名(在这种情况下,{{1} }})。请注意,$也有自己独特的功能!它可能与示例#2

  • 的工作方式不同

我建议您将所有JavaScript放在HTML jQuery(document).ready之前。在这种情况下,上述两个例子应该或多或少地相同。

如@elclanrs所示,您也可以使用</body>。返回值将充当新的jQuery.noConflict()变量。有些人喜欢使用jQuery