淺析document.ready和window.onload的區(qū)別講解
Javascript 只有在DOM元素已經(jīng)定義以后才可以對其執(zhí)行某種操作,這個問題在“javascript執(zhí)行順序里”http://www.dbjr.com.cn/article/44577.htm一文里有詳細(xì)介紹。
jQuery使用document.ready來保證所要執(zhí)行的代碼是在DOM元素被加載完成的情況下執(zhí)行。比如在"jQuery基礎(chǔ) - 如何開始"一文里,我用到如下jQuery代碼:
<!-- $(document).ready(function ()
{
alert("我的第一個jQuery代碼!");
});
// -->
這段代碼的意思是:當(dāng)Dom Tree加載完成后,顯示警告信息。
document.ready()和傳統(tǒng)的方法<body onload=”load()”> 相似,不同的是onload()的方法是在頁面加載完成后才發(fā)生,這包括DOM元素和其他頁面元素(例如圖片)的加載,
因此,使用document.ready()方法的執(zhí)行速度比onload()的方法要快。
最后要注意兩點(diǎn)(來自jQuery文檔):
1.確保在 <body> 元素的onload事件中沒有注冊函數(shù),否則可能不會觸發(fā)$(document).ready()事件。(
我嘗試用下面的例子來演示這個情況,但是沒有成功,所以我想這種情況只是可能發(fā)生。)
<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的函數(shù)含有jquery注冊函數(shù)$
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()事件。其中注冊的函數(shù)會按照(代碼中的)先后順序依次執(zhí)行。
相關(guān)文章
深入document.write()與HTML4.01的非成對標(biāo)簽的詳解
本篇文章對document.write()與HTML4.01的非成對標(biāo)簽進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下2013-05-05在JavaScript中使用對數(shù)Math.log()方法的教程
這篇文章主要介紹了在JavaScript中使用對數(shù)Math.log()方法的教程,是JS入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-06-06深入解讀JavaScript中的Hoisting機(jī)制
這篇文章主要介紹了JavaScript中的Hoisting機(jī)制,涉及到JS中變量聲明的相關(guān)問題,需要的朋友可以參考下2015-08-08