jQuery與原生JavaScript選擇HTML元素集合用法對(duì)比分析

本文實(shí)例講述了jQuery與原生JavaScript選擇HTML元素集合用法。分享給大家供大家參考,具體如下:

成都創(chuàng)新互聯(lián)從2013年開(kāi)始,先為安陸等服務(wù)建站,安陸等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢(xún)服務(wù)。為安陸企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

通過(guò)調(diào)用document.getElementsByTagName, document.getElementsByName以及document.getElementsByClassName(部分瀏覽器不支持),可以返回HTMLCollection對(duì)象。表面上,它們與數(shù)組很類(lèi)似,因?yàn)樗鼈兌及琹ength屬性并且元素都可以通過(guò)[index]方式訪問(wèn)。然而,實(shí)際上它們并不是數(shù)組;諸如push(), slice()與sort()之類(lèi)的方法不受支持。

考慮下面的HTML文檔:

<body>
  <p>Paragraph 1</p>
  <p>Paragraph 2</p>
  <p>Paragraph 3</p>
</body>

我們使用原生JavaScript的getElementsByTagName方法與jQuery選擇器分別獲取每一個(gè)paragraph節(jié)點(diǎn):

var pCollection = document.getElementsByTagName("p");
var pQuery = $("p");
console.log("pCollection.length: ", pCollection.length);
console.log("pQuery.length: ", pQuery.length);

它們都返回了相同的節(jié)點(diǎn),因此集合長(zhǎng)度都是3:

pCollection.length: 3
pQuery.length: 3

我們現(xiàn)在再向文檔中添加一個(gè)paragraph元素,然后再觀察一下集合:

// add new paragraph
var newp = document.createElement("p");
newp.appendChild(document.createTextNode("Paragraph 4"));
document.body.appendChild(newp);
// 
// display length
console.log("pCollection.length: ", pCollection.length);
console.log("pQuery.length: ", pQuery.length);

運(yùn)行結(jié)果:

pCollection.length: 4
pQuery.length: 3

HTMLCollection對(duì)象是實(shí)時(shí)的(live)。它們會(huì)在相應(yīng)文檔發(fā)生變化時(shí)自動(dòng)更新。jQuery與其他JavaScript庫(kù)也使用了諸如document.getElementsByTagName()之類(lèi)的方法,但是將返回的節(jié)點(diǎn)拷貝到一個(gè)真正的數(shù)組里面。因此,查詢(xún)得到的結(jié)果反映的是文檔當(dāng)時(shí)的狀態(tài):而不會(huì)隨著文檔的變化自動(dòng)更新。

兩種方法各有利弊。例如,下面的代碼會(huì)導(dǎo)致無(wú)限循環(huán),因?yàn)镠TMLCollection的長(zhǎng)度會(huì)在<p>元素增加時(shí)自動(dòng)+1:

var pCollection = document.getElementsByTagName("p");
for (var i = 0; i < pCollection.length; i++) {
  document.body.appendChild(pCollection[i].cloneNode(true));
}

有時(shí)候,相較于靜態(tài)的jQuery節(jié)點(diǎn)集合或者重復(fù)調(diào)用選擇器,使用速度更快、原生的實(shí)時(shí)HTMLCollection更合適。幸運(yùn)的是,我們可以在需要時(shí)方便地將任何集合傳遞給jQuery,例如:

var pCollection = document.getElementsByTagName("p");
// ... add nodes, do work, etc ...
$(pCollection).addClass("myclass");

jQuery與其他庫(kù)可以減少開(kāi)發(fā)工作量,但是,在可能的情況下,使用原生(plain old)JavaScript,可以避免額外的文件請(qǐng)求與處理開(kāi)銷(xiāo),從而寫(xiě)出更加高效的代碼。

原文鏈接:http://www.sitepoint.com/javascript-vs-jquery-html-collections/

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專(zhuān)題:《JavaScript操作DOM技巧總結(jié)》、《JavaScript頁(yè)面元素操作技巧總結(jié)》、《JavaScript事件相關(guān)操作與技巧大全》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

當(dāng)前文章:jQuery與原生JavaScript選擇HTML元素集合用法對(duì)比分析
標(biāo)題URL:http://muchs.cn/article0/isphio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、App設(shè)計(jì)全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站收錄、云服務(wù)器虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)