javascript - page - jquery innerhtml




我該如何初始化jQuery? (4)

我見過這個(我也在使用它):

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

而這(我最近嘗試過):

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

兩者都很好。

兩者有什麼不同(除了看起來如何)?

哪一個更合適?


您顯示的第二個示例是自執行匿名函數。 您使用的每個單獨的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
});

我總是使用第一個。 第二種似乎是一種防止jquery被覆蓋的方法。 您可能會這樣做的一個原因是,如果您不知道頁面上將加載哪些其他腳本。 如果所有的東西都依賴於jquery 1.3,並且你處於一個你不控制整個頁面的環境中,那麼如果有人在jquery 1.4中加載你的代碼就會破壞。 聽起來很難看,但這種事情確實發生了。 所以你可以通過在加載jquery後立即創建一個閉包來覆蓋你的屁股,並在你的閉包中保存你的jquery版本。 我認為這是第二個例子中發生的事情。

兩者都沒有實際初始化jquery。 Jquery負責自己需要的任何初始化。 即使你使用第二個例子,你仍然很可能會使用第一個例子,你只需要在第二個例子中將$(document).ready 放在函數內部


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

傳統方法與大多數瀏覽器兼容,請參閱代碼:

$(document).ready(function () {

        });

簡單的方法,見代碼:

$(function () {

        });

隱式方法,見代碼:

$().ready(function () {

        });

它們都適用於現代瀏覽器並且可以安全使用。


雖然這是一個古老的對話,我想分享我的方式來初始化jQuery

;(function($, window, document) {

    // Your Code Goes Here

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

通過這個,你可以肯定沒有什麼可以出錯。





jquery