$(document).ready()
- 它是如何執行的?遊標是否會在該行中等待,以便在DOM創建後執行代碼或者在瀏覽器創建DOM之後,該方法將像事件處理程序一樣執行?
如果圖像不被下載但$(document).ready()
被執行以讀取該圖像的src
屬性以在DOM構建之後分配給某個其他本地變量?
$(document).ready()
- 它是如何執行的?遊標是否會在該行中等待,以便在DOM創建後執行代碼或者在瀏覽器創建DOM之後,該方法將像事件處理程序一樣執行?
如果圖像不被下載但$(document).ready()
被執行以讀取該圖像的src
屬性以在DOM構建之後分配給某個其他本地變量?
這是一個事件處理程序,它不等待一切下載。它只是等待,直到DOM被構建,並且ready
被轉換。從docs:
雖然JavaScript提供了當 呈現頁面時執行代碼的加載事件,不會被觸發此事件,直到如圖像的所有資產 已經完全接收。在大多數情況下,只要DOM層次已完全構建,就可以運行 腳本。傳遞給.ready()的處理程序保證在DOM準備就緒後執行 ,所以這通常是 附加所有其他事件處理程序並運行其他jQuery代碼的最佳位置。在使用依賴CSS樣式屬性的值的 腳本時,重要的是 在引用腳本之前引用外部樣式表或嵌入樣式元素 之前。
其實背後的代碼相當簡單。它只是等待document.body
可訪問(NOT NULL):
function (wait) {
// Either a released hold or an DOMready/load event and not yet ready
if ((wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady)) {
// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
if (!document.body) {
return setTimeout(jQuery.ready, 1);
}
// Remember that the DOM is ready
jQuery.isReady = true;
// If a normal DOM Ready event fired, decrement, and wait if need be
if (wait !== true && --jQuery.readyWait > 0) {
return;
}
// If there are functions bound, to execute
readyList.resolveWith(document, [jQuery]);
// Trigger any bound ready events
if (jQuery.fn.trigger) {
jQuery(document).trigger("ready").unbind("ready");
}
}
}
的。就緒()的代碼塊進行解析,/它在網頁中遇到的時候坦然,但實際執行中的推遲到「準備就緒」條件滿足爲止。您可以根據需要擁有儘可能多的.ready()塊 - 它們不會掛起頁面 - 它們設計爲不掛起頁面。
如果我可以根據需要添加儘可能多的.ready()方法,那麼它會按它存在的順序執行這一頁? – deen 2012-03-22 19:31:37
我相信如此,但實際上並不確定。我很少必須使用多個就緒塊,並且它們都不依賴於順序。 – 2012-03-22 19:33:59
當DOM準備就緒時會觸發它。 Fire when DOM is ready...
無論圖像資源是否可在頁面中嵌入/可見,圖像的src'都將存在於DOM中。但是+1提出的問題直到現在我還沒有想過。 =) – 2012-03-22 19:17:19
除此之外,'$(window).load()'在所有資源加載後執行 – Matthew 2012-03-22 19:20:10