2014-05-23 67 views
1

在一些教程,我發現jQuery的聲明是這樣的:這個jQuery init的含義是什麼?

(function($){ 
    //Init some code 

})(jQuery); 

是如何工作的jQuery的?

我通常初始化jQuery的main.js這樣的:

$(document).ready(function(){ 
//Init some code 
}); 
+0

@Juhana謝謝,我想知道這一點。 –

+0

@Juhana哎呀,是的,我誤解了,並認爲它是'$(function(){...})'快捷方式。 –

回答

4

兩個代碼有很大的不同。

$(document).ready(function(){ 
    //Init some code 
}); 

只要文檔完成加載就會執行此操作。它可以放在任何地方。閱讀更多here。 While:

(function($){ 
//Init some code 

})(jQuery); 

是自我執行功能。它將在瀏覽器出現時執行。如果你把它放在你的代碼的開頭,它會執行immentaly,所以如果你的元素在這個自執行函數之後,那麼jquery選擇器可能無法工作,因爲那時元素根本就不存在。基本上這個代碼是一個將被聲明的同時執行的函數,所以jQuery將作爲第一個參數($)傳遞。

Tl; dr; document.ready的位置並不重要 - 它將在文檔加載完成時執行,而自執行函數的位置應該僅在dom元素聲明之後。