我该如何初始化jQuery?

时间:2010-02-07 04:16:11

标签: javascript jquery

我已经看过了(我也在使用它):

$(document).ready(function(){
   // do jQuery
})

还有这个(我最近尝试过):

(function(){
   // do jQuery
})(jQuery)

两者都很好。

两者有什么不同(除了看起来如何)?

哪一个更适合使用?

5 个答案:

答案 0 :(得分:38)

您展示的第二个示例是自执行匿名函数。您使用的每个单独的JS文件都可能从使用它中受益。它提供了一个私有范围,您使用var关键字声明的所有内容仅保留在该范围内:

(function($){
   var special = "nice!";
})(jQuery);

alert(special); // would be undefined

第一个示例是$(document).ready的简写,可以在操作DOM时触发。

关于它的一些很酷的事情。首先,您可以在自执行功能中使用它:

(function($){
   $(function(){
      // Run on DOM ready
   });

   // Run right away
})(jQuery);

其次,如果你需要的只是文档中的几行,你可以将私有作用域和DOM就绪函数结合起来,如下所示:

jQuery(function($){
   // $ = jQuery regardless of what it means
   // outside this DOM ready function
});

答案 1 :(得分:30)

第一个示例在构建DOM树时运行该函数。 第二个例子立即运行该功能。

如果你仔细观察,在第二个例子中,在函数声明之后有两个括号(在这种特殊情况下,你传入全局jQuery对象作为参数以避免冲突),从而立即调用功能

使用的正确功能取决于您希望函数运行的时间。 如果您想在DOMReadyready事件)上运行某个功能,可以使用您提到的$( document ).ready或速记$( function() {...} )

否则,如果要立即运行函数并具有匿名函数作用域,请使用第二个示例。

答案 2 :(得分:5)

除了之前的所有答案, jQuery有三种可以使用的初始化方法:

与大多数浏览器兼容的传统方法,请参阅代码:

$(document).ready(function () {

        });

简介方法,见代码:

$(function () {

        });

隐式方法,参见代码:

$().ready(function () {

        });

它们都适用于现代浏览器并且可以安全使用。

答案 3 :(得分:3)

我总是使用第一个。第二种似乎是一种防止jquery被覆盖的方法。您可能会这样做的一个原因是,如果您不知道页面上将加载哪些其他脚本。如果所有的东西都依赖于jquery 1.3,并且你处于一个你不控制整个页面的环境中,那么如果有人在jquery 1.4中加载你的代码就会破坏。听起来很难看,但这种事情确实发生了。所以你可以通过在加载jquery后立即创建一个闭包来覆盖你的屁股,并在你的闭包中保存你的jquery版本。我认为这是第二个例子中发生的事情。

两者都没有实际初始化jquery。 Jquery负责自己需要的任何初始化。即使你使用的是第二个例子,你仍然很可能会使用第一个例子,你只需要在第二个例子中将$(document).ready 放在函数中。 / p>

答案 4 :(得分:1)

尽管这是一个古老的话题,但我想分享一下初始化jQuery的方法

;(function($, window, document) {

    // Your Code Goes Here

}(window.jQuery, window, document));

这样,您可以确定不会出错。