注:本筆記內(nèi)容摘自《jQuery基礎(chǔ)教程》+ jQuery 1.4.1中文參考 代碼執(zhí)行的時(shí)機(jī)選擇 $(document).ready()是jQuery中響應(yīng)JavaScript內(nèi)置的onload事件并執(zhí)行任務(wù)的一種典型方式。雖然$(document).ready()和onload具有類似的效果,但是,它們?cè)谟|發(fā)操作的時(shí)間上存在著微妙的差異。 當(dāng)一個(gè)文檔完全下載到瀏覽器中時(shí),會(huì)觸發(fā)window.onload事件處理程序,則會(huì)在DOM完全就緒并可以使用時(shí)調(diào)用。雖然也意味著所有元素對(duì)腳本而言都是可以訪問(wèn)的,但是,卻不意味著所有關(guān)聯(lián)的文件都已經(jīng)下載完畢。換句話說(shuō),HTML下載完成并解析為DOM樹(shù)之后,代碼就可以運(yùn)行。 當(dāng)我們使用$(document).ready()進(jìn)行設(shè)置時(shí),這個(gè)界面就會(huì)更早地準(zhǔn)備好可用的正確行為(相對(duì)于onload而言)。
基于一個(gè)頁(yè)面執(zhí)行多個(gè)腳本 通過(guò)JavaScript注冊(cè)事件處理程序的傳統(tǒng)機(jī)制是,把一個(gè)函數(shù)指定給DOM元素的對(duì)應(yīng)屬性。例如,假設(shè)我們已經(jīng)定義了如下函數(shù): function doStuff(){ //執(zhí)行某種任務(wù)… … } 那么,我們既可以在HTML標(biāo)記中指定該函數(shù): <body onload=”doStuff();”> 也可以在JavaScript代碼中指定該函數(shù): window.onload=doStuff; 這兩種方式都會(huì)導(dǎo)致在頁(yè)面加載完成后執(zhí)行這個(gè)函數(shù)。但第2種方式的優(yōu)點(diǎn)在于,它能使行為更清晰地從標(biāo)記中分離出來(lái)。現(xiàn)在,假設(shè)我們有定義了第2個(gè)函數(shù): function doOtherStuff(){ //執(zhí)行另外一種任務(wù)… … } 我們也可以將它指定為基于頁(yè)面的加載來(lái)運(yùn)行: window.onload= doOtherStuff; 然而,這次指定的函數(shù)會(huì)取代剛才指定的第1個(gè)函數(shù)。因?yàn)?onload屬性一次只能保存對(duì)一個(gè)函數(shù)的引用,所以不能在現(xiàn)有的行為基礎(chǔ)上再增加新行為。 對(duì)于這種情況下,通過(guò)$(document).ready()機(jī)制能夠得到很好的處理。每次調(diào)用那個(gè)這個(gè)方法都會(huì)向內(nèi)部的行為隊(duì)列中添加一個(gè)新函數(shù),當(dāng)頁(yè)面加載完成后,所有函數(shù)都將得到執(zhí)行。而且,這些函數(shù)會(huì)按照注冊(cè)它們的順序依次執(zhí)行。
縮短代碼的簡(jiǎn)寫方式 前面提到的$(document).ready()結(jié)構(gòu),實(shí)際上是在基于document這個(gè)DOM元素構(gòu)建而成的jQuery對(duì)象上,調(diào)用了.ready()方法。因?yàn)檫@是一個(gè)常用方法,所以$()函數(shù)為我們提供了一種簡(jiǎn)寫方式。當(dāng)調(diào)用這個(gè)函數(shù)而不傳遞參數(shù)時(shí),該函數(shù)的行為就像是傳遞了document參數(shù)。也就是說(shuō),對(duì)于: $(document).ready(function(){ //這里是代碼 }); 也可以簡(jiǎn)寫成: $().ready(function(){ //這里是代碼 }); 此外,這個(gè)工廠函數(shù)也可以接受另一個(gè)函數(shù)作為參數(shù)。此時(shí),jQuery會(huì)在內(nèi)部執(zhí)行一次對(duì).ready()的隱含調(diào)用,因此,使用下面的代碼也可以得到相同的結(jié)果: $(function(){ //這里是代碼 }); 雖然這幾種語(yǔ)法都更短一些,但程序設(shè)計(jì)者們通常更喜歡使用較長(zhǎng)的形式能夠更清楚地表示代碼在做什么。
|
|
來(lái)自: 昵稱21365845 > 《jQuery》