我该如何初始化jQuery?

Rei*_*gel 39 javascript jquery

我见过这个(我也在使用它):

$(document).ready(function(){
   // do jQuery
})
Run Code Online (Sandbox Code Playgroud)

而这(我最近尝试过):

(function(){
   // do jQuery
})(jQuery)
Run Code Online (Sandbox Code Playgroud)

两者都很好.

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

哪一个更合适?

Dou*_*ner 39

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

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

alert(special); // would be undefined
Run Code Online (Sandbox Code Playgroud)

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

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

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

   // Run right away
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

其次,如果您需要的只是文档中的几行,您可以将私有范围和DOM就绪函数组合在一起,如下所示:

jQuery(function($){
   // $ = jQuery regardless of what it means
   // outside this DOM ready function
});
Run Code Online (Sandbox Code Playgroud)

  • 任何时候你有代码需要立即运行,另外在文档中,最好将整个文件包装在 `(function ($) { ... }(jQuery))` 中,然后你可以使用 `$ ` 在没有潜在冲突的任何您需要的地方。然后,当您需要`DOM Ready` 时,您只需使用`$(function () { ... })` (2认同)

Jac*_*kin 31

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

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

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

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


Ash*_*ada 5

除上述所有答案外,jQuery还提供了三种可以使用的初始化方法:

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

$(document).ready(function () {

        });
Run Code Online (Sandbox Code Playgroud)

速记方法,请参见代码:

$(function () {

        });
Run Code Online (Sandbox Code Playgroud)

隐式方法,请参见代码:

$().ready(function () {

        });
Run Code Online (Sandbox Code Playgroud)

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