jQuery和原生JavaScript操作方法总结
DOM元素的获得
原生中获取的方法 | jQuery |
---|---|
getElementById(“”) IE6 | $(“#box p span” ) |
getElementsByTagName(“”) IE6 | |
getElementsByName(“”) IE8 | |
getElementsByClassName(“”) IE8 | |
querySelector() | |
querySelectorAll() |
注意:原生中的方法不是document的方法,而是所有nodeType为1的节点都有的方法。
jQuery3使用querySelectorAll()得到所有元素节省了空间,使用正则和递归获得所有节点。
- 特别注意:对于form表单,加油name属性的,里面所有控件都加name属性,可以直接document打点获得。 document.myForm可以得到属性值为myform的表单,其中的控件,可以通过document.myForm.age方式获得。
DOM元素的节点关系
原生中节点关系属性(不是方法) | jQuery中丰富了节点关系 |
---|---|
childNodes | parent() |
parentNode | parents() |
firstChlid | closest() |
lastChild | parentUntil() |
previousSibling | children() |
nextSibling | find() |
siblings() | |
prev() | |
prevAll() | |
next() | |
nextAll() |
DOM元素的创建
原生 | jQuery中节点创建 |
---|---|
createElement() | $( ) |
innerHTML() | parents() |
$( ) 如果函数中没有< >就认为传入的是选择器;如果有< >则命令$创建孤儿节点。
原生中创建节点之后,必须添加到已有节点上才能生效,添加方法有
- appendChild()
- insertBefore()
insertBefore第二个参数是标杆,通常是第一个元素。insertBefore实际上要选择一个标杆,插入到这个标杆的前面,但是所有程序员都习惯把标杆设为第一个子元素。在第一个子元素之前插入,不就是插入到现有儿子之前。 jQuery中创建节点之后同样也要添加到已有节点上,添加方法有:
- append()
- appendTo()
- prepend()
- prependTo()
- after()
- insertAfter()
- before()
- insertBefore()
- $("p").wrap("<div></div>”);
- $("p").wrapAll("<div></div>");
原生中创建三步走:
- 创建节点 : var nli = document.createElement(“li”);
- 添加内容 : nli.innerHTML = “something”;
- 添加到DOM树上 : 两种方法:父元素.appendChild() 或者 父元素.insertBefore(nli , 标杆)
原生中的innerHTML可以实现添加的功能,只要将复杂DOM结构变为join字符串形式,放到innerHTML中作为添加部分。
DOM元素的删除
- 原生方法
removeChild() 必须是父节点删除子节点,不能自己删除自己
replaceChild(孤儿节点,被替换节点)
- jQuery中元素的删除
remove() 表示删除自己
empty() 表示清空,等价于innerHTML = “”
replaceAll(),replaceWith()
DOM元素位置的变化
原理很简单:一个DOM元素只能在DOM树有一个位置,如果它再次上树,则会移动位置。
appendChild( )原理是先将元素从自己的父级上删除,再加到新的父节点上去。
DOM元素的克隆
- 原生是cloneNode()方法,jQuery叫做clone()。
原生如果要克隆元素的所有内部元素,要加true参数(深克隆)。 oDiv.cloneNode(true),得到的是孤儿节点,继续上树。
- jQuery中不能更改是否要克隆内部元素,一定是克隆的。 $().clone().appendTo();
作者:ACodingIceBear
链接:https://juejin.im/post/5a3c77c8f265da43347018a9
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。