原生JS和jQuery操作DOM對比總結(jié)
一、創(chuàng)建元素節(jié)點
1.1 原生JS創(chuàng)建元素節(jié)點
document.createElement("p");
1.2 jQuery創(chuàng)建元素節(jié)點
$('<p></p>');`
二、創(chuàng)建并添加文本節(jié)點
2.1 原生JS創(chuàng)建文本節(jié)點
`document.createTextNode("Text Content");
通常創(chuàng)建文本節(jié)點和創(chuàng)建元素節(jié)點配合使用,比如:
var textEl = document.createTextNode("Hello World.");
var pEl = document.createElement("p");
pEl.appendChild(textEl);
2.2 jQuery創(chuàng)建并添加文本節(jié)點:
var $p = $('<p>Hello World.</p>');
三、復(fù)制節(jié)點
3.1 原生JS復(fù)制節(jié)點:
var newEl = pEl.cloneNode(true); `
true和false的區(qū)別:
- true :克隆整個'<p>Hello World.</p>'節(jié)點
- false:只克隆'<p></p>' ,不克隆文本Hello World.'
3.2 jQuery復(fù)制節(jié)點
$newEl = $('#pEl').clone(true);
注意:克隆節(jié)點要避免`ID重復(fù)
四、 插入節(jié)點
4.1 原生JS向子節(jié)點列表的末尾添加新的子節(jié)點
El.appendChild(newNode);
原生JS在節(jié)點的已有子節(jié)點之前插入一個新的子節(jié)點:
El.insertBefore(newNode, targetNode);
4.2 在jQuery中,插入節(jié)點的方法比原生JS多的多
在匹配元素子節(jié)點列表結(jié)尾添加內(nèi)容
$('#El').append('<p>Hello World.</p>');
把匹配元素添加到目標(biāo)元素子節(jié)點列表結(jié)尾
$('<p>Hello World.</p>').appendTo('#El');
在匹配元素子節(jié)點列表開頭添加內(nèi)容
$('#El').prepend('<p>Hello World.</p>');
把匹配元素添加到目標(biāo)元素子節(jié)點列表開頭
$('<p>Hello World.</p>').prependTo('#El');
在匹配元素之前添加目標(biāo)內(nèi)容
$('#El').before('<p>Hello World.</p>');
把匹配元素添加到目標(biāo)元素之前
$('<p>Hello World.</p>').insertBefore('#El');
在匹配元素之后添加目標(biāo)內(nèi)容
$('#El').after('<p>Hello World.</p>');
把匹配元素添加到目標(biāo)元素之后
$('<p>Hello World.</p>').insertAfter('#El');
五、刪除節(jié)點
5.1 原生JS刪除節(jié)點
El.parentNode.removeChild(El);
5.2 jQuery刪除節(jié)點
$('#El').remove();
六、替換節(jié)點
6.1 原生JS替換節(jié)點
El.repalceChild(newNode, oldNode);
注意:oldNode必須是parentEl真實存在的一個子節(jié)點
6.2 jQuery替換節(jié)點
$('p').replaceWith('<p>Hello World.</p>');
七、設(shè)置屬性/獲取屬性
7.1 原生JS設(shè)置屬性/獲取屬性
imgEl.setAttribute("title", "logo");
imgEl.getAttribute("title");
checkboxEl.checked = true;
checkboxEl.checked;
7.2 jQuery設(shè)置屬性/獲取屬性:
$("#logo").attr({"title": "logo"});
$("#logo").attr("title");
$("#checkbox").prop({"checked": true});
$("#checkbox").prop("checked");
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
BootStrap Typeahead自動補(bǔ)全插件實例代碼
本文給大家介紹BootStrap Typeahead自動補(bǔ)全插件的實例代碼,非常不錯,具有參考借鑒價值,需要的朋友參考下2016-08-08
JS根據(jù)年月獲得當(dāng)月天數(shù)的實現(xiàn)代碼
這篇文章主要介紹了JS根據(jù)年月獲得當(dāng)月天數(shù)的實現(xiàn)代碼,需要的朋友可以參考下2014-07-07
基于JavaScript實現(xiàn)移動端TAB觸屏切換效果
我們使用移動端時可以通過觸屏手勢左右滑動來切換TAB欄目,如網(wǎng)易新聞等APP欄目切換。我們說的TAB一般由導(dǎo)航條和TAB對應(yīng)的內(nèi)容組成,切換導(dǎo)航條上的標(biāo)簽同時標(biāo)簽對應(yīng)的內(nèi)容也會跟著切換。本文將結(jié)合實例給大家介紹一個移動端TAB觸屏切換效果。2015-10-10
js重寫alert事件(避免alert彈框標(biāo)題出現(xiàn)網(wǎng)址)
這篇文章主要給大家介紹了關(guān)于js重寫alert事件的相關(guān)資料,這樣可以避免alert彈框標(biāo)題出現(xiàn)網(wǎng)址的情況,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
JavaScript是否可實現(xiàn)多線程 深入理解JavaScript定時機(jī)制
JavaScript的setTimeout與setInterval是兩個很容易欺騙別人感情的方法,因為我們開始常常以為調(diào)用了就會按既定的方式執(zhí)行, 我想不少人都深有同感,2009-12-12
從setTimeout看js函數(shù)執(zhí)行過程
這篇文章主要介紹了從setTimeout看js函數(shù)執(zhí)行過程,需要的朋友可以參考下2017-12-12
JavaScript中數(shù)組去重的辦法總結(jié)
你是否在面試的過程中被考到過給你一個數(shù)組讓你去掉重復(fù)項呢,下面小編就來總結(jié)一下對于數(shù)組去重這道簡單的面試題時,我們可以回答的方法有什么吧2023-06-06

