原生javascript和jQuery操作DOM的對比總結
目錄:
DOM元素節點:1)文檔節點;2)元素節點;3)屬性節點;4)文本節點;5)注釋節點
1)創建節點
2)選擇(訪問)節點
3)操作:
1)節點操作
1)添加節點
2)刪除節點
3)替換節點
4)修改內容:
1)文本【text】
2)html
3)表單val
4)改變事件
2)CSS操作
3)動畫
下文轉自:http://www.jb51.net/article/103583.htm
這篇文章主要給大家介紹了原生JS和jQuery操作DOM的一些對比總結,文中總結了很多的對比,相信對大家的學習或者工作能帶來一定的幫助,需要的朋友可以參考借鑒,下面來一起看看吧。
一、創建元素節點
1.1 原生JS創建元素節點
document.createElement("p"); var text= document.createTextNode("hello");//創建文本節點
1.2 jQuery創建元素節點
$('<p></p>');
二、創建並添加文本節點
2.1 原生JS創建文本節點
document.createTextNode("Text Content");
通常創建文本節點和創建元素節點配合使用,比如:
var textEl = document.createTextNode("Hello World."); var pEl = document.createElement("p"); pEl.appendChild(textEl);
2.2 jQuery創建並添加文本節點:
var $p = $('<p>Hello World.</p>');
三、復制節點
3.1 原生JS復制節點:
var newEl = pEl.cloneNode(true);
true和false的區別:
- true :克隆整個'<p>Hello World.</p>'節點
- false:只克隆'<p></p>' ,不克隆文本Hello World.'
3.2 jQuery復制節點
$newEl = $('#pEl').clone(true);
注意:克隆節點要避免`ID重復
四、 插入節點
4.1 原生JS向子節點列表的末尾添加新的子節點
El.appendChild(newNode);
原生JS在節點的已有子節點之前插入一個新的子節點:
El.insertBefore(newNode, targetNode);
4.2 在jQuery中,插入節點的方法比原生JS多的多
在匹配元素子節點列表結尾添加內容
$('#El').append('<p>Hello World.</p>');
把匹配元素添加到目標元素子節點列表結尾
$('<p>Hello World.</p>').appendTo('#El');
在匹配元素子節點列表開頭添加內容
$('#El').prepend('<p>Hello World.</p>');
把匹配元素添加到目標元素子節點列表開頭
$('<p>Hello World.</p>').prependTo('#El');
在匹配元素之前添加目標內容
$('#El').before('<p>Hello World.</p>');
把匹配元素添加到目標元素之前
$('<p>Hello World.</p>').insertBefore('#El');
在匹配元素之后添加目標內容
$('#El').after('<p>Hello World.</p>');
把匹配元素添加到目標元素之后
$('<p>Hello World.</p>').insertAfter('#El');
五、刪除節點
5.1 原生JS刪除節點
El.parentNode.remove();
5.2 jQuery刪除節點
$('#El').remove();
六、替換節點
6.1 原生JS替換節點
El.repalceChild(newNode, oldNode);
注意:oldNode必須是parentEl真實存在的一個子節點
6.2 jQuery替換節點
$('p').replaceWith('<p>Hello World.</p>');
七、設置屬性/獲取屬性
7.1 原生JS設置屬性/獲取屬性
imgEl.setAttribute("title", "logo"); imgEl.getAttribute("title"); checkboxEl.checked = true; checkboxEl.checked;
7.2 jQuery設置屬性/獲取屬性:
$("#logo").attr({"title": "logo"}); $("#logo").attr("title"); $("#checkbox").prop({"checked": true}); $("#checkbox").prop("checked");
八、訪問節點
8.1原生js訪問節點方法
node.getElementById("id");//通過使用 getElementById() 方法 node.getElementsByTagName("tagname");//通過使用 getElementsByTagName() 方法 document.getElementsByClassName("intro");//通過使用 getElementsByClassName() 方法
8.2原生Js訪問父,子,兄弟節點
//訪問兄弟節點 element.nextSibling //返回位於相同節點樹層級的下一個節點。 element.previousSibling //返回位於相同節點樹層級的前一個元素。 //訪問父節點 element.parentNode //返回元素的父節點。
8.3jquery訪問節點方法是通過選擇器訪問,這里不詳細敘述