之前就聽說關於自我執行功能我總是要做到這一點:自執行函數是否在dom準備好運行?
$(document).ready(function() {
doSomething();
});
function doSomething()
{
// blah
}
會自我執行功能有同樣的效果?它會在dom上運行嗎?
(function doSomething($) {
// blah
})(jQuery);
之前就聽說關於自我執行功能我總是要做到這一點:自執行函數是否在dom準備好運行?
$(document).ready(function() {
doSomething();
});
function doSomething()
{
// blah
}
會自我執行功能有同樣的效果?它會在dom上運行嗎?
(function doSomething($) {
// blah
})(jQuery);
沒有。一個自執行函數在Javascript引擎找到它時運行。但是,如果您在關閉</body>
標記(即highly recommended)之前將所有代碼放在文檔末尾,那麼您無需等待DOM準備就緒,因爲您已經自動完成了DOM準備。
如果你想要的是你的範圍變數$
,你不希望你的代碼移動到頁面的底部,您可以使用此:
jQuery(function($){
// The "$" variable is now scoped in here
// and will not be affected by any code
// overriding it outside of this function
});
它贏得了」 t,它將在JavaScript文件執行後立即運行。
不,自執行javascript函數在那裏運行。
如果你想創建一個DOM準備功能,寫:
$(function() {
// this will run on DOM ready
});
這是一個速記:
$(document).ready(function() {
});
沒有,自動執行功能立刻在運行「在你的代碼中聲明「。即使它位於外部.js文件中。
在你的榜樣,還有你的函數將執行的可能性和jQuery的是未定義值。如果你想成爲domready中執行代碼,繼續使用
$(document).ready(function(){
doSomething();
});
或
$(function(){
doSomething();
});
甚至
window.onload = function(){
doSomething();
}
這是onLoad,這不等同於DOM就緒! –
@KARASZI是對的。 onLoad之前DOM Ready會觸發。 onLoad只會在所有內容加載時啓動(圖片等):https://developer.mozilla.org/en/DOM/window.onload。 –
$(document).ready(function() { ... });
只需綁定該函數將文檔的準備情況,所以,如你所說,當文檔加載時,事件觸發。
(function($) { ... })(jQuery);
實際上是JavaScript的一個構建體,以及所有的代碼段的作用是通過jQuery對象入函數($)作爲參數,並運行該函數,使得函數內部,$始終指的jQuery目的。這可以幫助解決命名空間衝突等。
所以#1,而#2立即運行加載該文件時執行,與名爲$速記jQuery對象
$(document).ready(function(){ ... }); or short $(function(){...});
當DOM準備就緒,這意味着這個函數被調用,你例如可以開始查詢元素。 .ready()將在不同的瀏覽器上使用不同的方式來確保DOM真的準備就緒。
(function(){ ... })();
這不是別的,一旦調用自身的可能時,瀏覽器解釋你的ECMA-/ JavaScript的功能。因此,您不可能在這裏成功地處理DOM元素。
[jQuery的的document.ready VS自調用匿名函數(的請使用代碼和鏈接按鈕 –
代碼和鏈接按鈕? –
是的,如果你不處於移動模式,他們會在發佈'textarea'之上。 –
可能重複http://stackoverflow.com/questions/3259496/jquery-document-ready-vs-self-calling-anonymous-function ) –