$(document).ready()方法和window.onload方法有相似的功能,但是在執行時機方面是有區別的。window.onload方法是子啊網頁中的所有元素(包括元素的所有關聯的文件)完全加載到瀏覽器后才執行,即javascript此可以訪問網頁中的任何元素。而通過jquery中的$(document).ready()方法注冊的時間處理程序,在DOM完全就緒時就可以被調用。此時,網頁的所有元素對jquery而言都是可以訪問的,但是,這並不意味着這些元素關聯的文件都已經下載完畢。
舉一個例子,有一個大型的圖庫網站,為網頁中的所有圖片添加某些行為,例如單機圖片后讓他隱藏或顯示。如果使用window.onload方法來處理,那么用戶必須等到每一副圖片都加載完畢后,才可以進行操作。如果使用jquery中的$(document).ready()方法來進行設置,只要DOM就緒就可以操作了,不需要等待所有圖片加載完畢。顯然,吧網頁解析為DOM樹的速度比吧網頁中的所有關聯文件加載完畢的素的快很多。
另外,需要注意一點,由於在$(document).ready()方法內注冊的事件,只要DOM就緒就會被執行,因此可能此時元素的關聯文件未下載完。例如與圖片有關的HTML下載完畢,並且已經即誒下為DOM樹了,但很有可能圖片還未加載完畢,所有例如圖片的高度和寬度這樣的屬性此時比一定有效。要解決這個問題,可以使用Jquery中另一個關於頁面加載的方法-----load()方法。load()方法會在元素的onload事件中綁定一個處理函數。如果處理函數綁定給window對象,則會在所有內容(包括窗口。框架,對象和圖像等)加載完畢后觸發,如果處理函數綁定在元素上,則會在元素的被容加載完畢后加載。jquery代碼如下:
$(window).load(function(){
//代碼
});
等價於javascript中的以下代碼:
window.onload=function(){
//代碼
}

例如1:時間加載對比:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script src="../../scripts/jquery-1.3.1.js" type="text/javascript"></script>
<script type="text/javascript">
var startTime = new Date().getTime();
$(document).ready(function(){
test1();
})
function test1(){
var endTime2 = new Date().getTime();
var a = endTime2 - startTime;
$("<div>jQuery的ready() : "+a+" ms</div>").appendTo("body");
}
function test2(){
var endTime1 = new Date().getTime();
var b = endTime1 - startTime;
$("<p>JavaScript的window.onload : "+b+" ms</p>").appendTo("body");
}
</script>
</head>
<body onload="test2();">
<img src="demo.jpg" style="width:200px;height:200px;"/>
</body>
</html>



window.onload
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript">
function one(){
alert("one");
}
function two(){
alert("two");
}
window.onload = one ;
window.onload = two ;
</script>
</head>
<body>
</body>
</html>
document.ready
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script src="../../scripts/jquery-1.3.1.js" type="text/javascript"></script> <script type="text/javascript"> function one(){ alert("one"); } function two(){ alert("two"); } $(document).ready(function(){ one(); }) $(document).ready(function(){ two(); }) </script> </head> <body> </body> </html>
出處:鋒利的jquery第二版 P99
