2

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

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

4

1 回答 1

4

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

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

  • 示例 #1 是jQuery特定的。 jQuery的内部工作原理是这样的,因此传递给document.ready函数的第一个参数就是jQuery它本身,您可以随意命名它(在本例中为$)。注意jQuery(document).ready也有自己独特的功能!它的工作方式可能与示例 #2 不同

我建议您将所有 JavaScript 都放在</body>HTML 之前。在这种情况下,上述两个示例应该以或多或少相同的方式工作。

正如@elclanrs 所指出的,您也可以使用jQuery.noConflict(). 返回值将作为新jQuery变量。有些人喜欢用$$.

于 2012-11-14T04:45:32.243 回答