淺析document.ready和window.onload的區(qū)別講解
Javascript 只有在DOM元素已經(jīng)定義以后才可以對(duì)其執(zhí)行某種操作,這個(gè)問(wèn)題在“javascript執(zhí)行順序里”http://www.dhdzp.com/article/44577.htm一文里有詳細(xì)介紹。
jQuery使用document.ready來(lái)保證所要執(zhí)行的代碼是在DOM元素被加載完成的情況下執(zhí)行。比如在"jQuery基礎(chǔ) - 如何開始"一文里,我用到如下jQuery代碼:
<!-- $(document).ready(function ()
{
alert("我的第一個(gè)jQuery代碼!");
});
// -->
這段代碼的意思是:當(dāng)Dom Tree加載完成后,顯示警告信息。
document.ready()和傳統(tǒng)的方法<body onload=”load()”> 相似,不同的是onload()的方法是在頁(yè)面加載完成后才發(fā)生,這包括DOM元素和其他頁(yè)面元素(例如圖片)的加載,
因此,使用document.ready()方法的執(zhí)行速度比onload()的方法要快。
最后要注意兩點(diǎn)(來(lái)自jQuery文檔):
1.確保在 <body> 元素的onload事件中沒(méi)有注冊(cè)函數(shù),否則可能不會(huì)觸發(fā)$(document).ready()事件。(
我嘗試用下面的例子來(lái)演示這個(gè)情況,但是沒(méi)有成功,所以我想這種情況只是可能發(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注冊(cè)函數(shù)$
function load(){ $("p").append("<b>Hello</b>"); }
//下面是jQuery的代碼
$(document).ready(function ()
{ $("p").append("我的第一個(gè)jQuery代碼!"
);
$("p").append("<b>Hello</b>"); }); // -->
</mce:script>
</head>
<body onload="load()">
<h2>jQuery 簡(jiǎn)單例子2</h2>
<p>I would like to say: </p>
</body>
</html>
2.可以在同一個(gè)頁(yè)面中無(wú)限次地使用$(document).ready()事件。其中注冊(cè)的函數(shù)會(huì)按照(代碼中的)先后順序依次執(zhí)行。
相關(guān)文章
javascript代碼運(yùn)行不出來(lái)執(zhí)行錯(cuò)誤的可能情況整理
js代碼運(yùn)行不出來(lái)的情況在項(xiàng)目中經(jīng)常發(fā)生,究竟是什么原因呢?在本文整理了一些常見的情況,感興趣的各位朋友可以參考下2013-10-10
javascript開發(fā)技術(shù)大全-第1章javascript概述
JavaScript 為 HTML 設(shè)計(jì)師提供了一種編程工具HTML 創(chuàng)作者往往都不是程序員,但是 JavaScript 卻是一種只擁有極其簡(jiǎn)單的語(yǔ)法的腳本語(yǔ)言!幾乎每個(gè)人都有能力將短小的代碼片斷放入他們的 HTML 頁(yè)面當(dāng)中。2011-07-07
在JavaScript中處理數(shù)組之reverse()方法的使用
這篇文章主要介紹了在JavaScript中處理數(shù)組之reverse()方法的使用,是JS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06

