2011-06-15 52 views
1

我真的很困惑,現在,我想,當頁面結束加載所有的東西在jQuery(document).ready(function(){ ... })被觸發什麼觸發了jQuery ready()函數? 。

那麼它看起來並不像,雖然,我只是經歷:在我的網頁上載大型畫冊併爲我的就緒功能添加警報。在下載完後臺圖像之前,似乎警報正在飛濺......是否需要等待代理用戶和http網絡服務器之間的通信調用ready函數?我的意思是我想讓遊客等待一個大的黑色div,然後「加載」文本,直到所有元素都輸出(然後釋放div)。

回答

1

從我的理解,這是當dom已加載。這將包括所有的腳本文件,我會假設css文件。但它不包括圖像。我想知道是否使用window.onload = function(){}會是一個更好的選擇。

window.onload vs $(document).ready()

+0

沒什麼可說的,我剛剛測試過,它按我的意願工作。十分感謝 ! – user544262772 2011-06-15 12:15:58

4

ready事件時,所有的DOM元素裝載被激發,而不是由那些元素所引用的任何圖像加載完成之前。您可能希望使用load事件,該事件將等待圖像加載完成。請注意文檔中的注意事項。

加載事件發送到一個元素,當它和所有的子元素已完全加載。這個事件可以發送到與URL相關的任何元素:圖像,腳本,框架,iframe和窗口對象。

例:

$(window).load(function() { ... do stuff ... }); 
0

ready事件triggerd畢竟DOM被完全構造。如果要等到圖像加載完畢,則可以使用load事件

1

window.onload當頁面上的所有內容都被加載時調用。所以,DOM,腳本,CSS和圖像。

document.ready在DOM完成構建時調用,因爲它正處於可以被操作/訪問的階段。所以在這種情況下,加載的是img html,但不包含圖像資源。

你可以爲圖像做load事件:

$("#image").load(function(){ 

    $("#div_you_want_to_hide").hide(); 

}); 

或者只是等待窗口完全加載:

$(window).load(function(){ 

    $("#div_you_want_to_hide").hide(); 

}); 
+0

很好的答案:)謝謝 – user544262772 2011-06-15 13:18:24

0

正如你可以在annotated source看到,jQuery的準備是隻是爲大多數瀏覽器添加了一個監聽器DOMContentLoaded,而對於ol'IE,它添加了onreadystatechange和onload。

從MDN文檔,

等待整頁「時,該文檔已被完全加載和解析,而無需等待樣式表,圖片和子框架完成加載的DOMContentLoaded事件觸發」,只是使用load聽衆或包裝它的jQuery(window).load(...)