Javascript 只有在DOM元素已經定義以後才可以對其執行某種操作,這個問題在「javascript執行順序裡」//www.VeVB.COm/article/44577.htm一文裡有詳細介紹。
jQuery使用document.ready來確保所要執行的程式碼是在DOM元素載入完成的情況下執行。例如在"jQuery基礎- 如何開始"一文裡,我用到如下jQuery程式碼:
複製代碼代碼如下:
<!-- $(document).ready(function ()
{
alert("我的第一個jQuery程式碼!");
});
// -->
這段程式碼的意思是:當Dom Tree載入完成後,顯示警告訊息。
document.ready()和傳統的方法<body onload=”load()”> 相似,不同的是onload()的方法是在頁面載入完成後才發生,這包括DOM元素和其他頁面元素(例如圖片)的加載,
因此,使用document.ready()方法的執行速度比onload()的方法還要快。
最後要注意兩點(來自jQuery文檔):
1.確保在<body> 元素的onload事件中沒有註冊函數,否則可能不會觸發$(document).ready()事件。 (
我嘗試用下面的例子來演示這個情況,但是沒有成功,所以我想這種情況只是可能發生。 )
複製代碼代碼如下:
<html>
<head>
<title>My second jQuery</title>
<mce:script type="text/javascript" src="/js/jquery.js" mce_src="js/jquery.js"></mce:script>
<mce:script type="text/javascript">
<!-- //下面是load的函數含有jquery註冊函數$
function load(){ $("p").append("<b>Hello</b>"); }
//下面是jQuery的程式碼
$(document).ready(function ()
{ $("p").append("我的第一個jQuery程式碼!"
);
$("p").append("<b>Hello</b>"); }); // -->
</mce:script>
</head>
<body onload="load()">
<h2>jQuery 簡單範例2</h2>
<p>I would like to say: </p>
</body>
</html>
2.可以在同一個頁面中無限次地使用$(document).ready()事件。其中註冊的函數會依照(程式碼中的)先後順序依序執行。