事例代码:
<div id="test">
<div>ppp</div>
<div>2</div>
<div id="dropdown">
<ul>
<li>123</li>
<li>1234</li>
<li>12345</li>
</ul>
</div>
</div>
<div >book</div>
var s = document.getElementById(“test”);
打印输出 < div id=”test”>
注意 : 获取数组形式,Elements.
document.docuemnt.getElementById(“test”).getElementsByTagName(“div”);
打印输出: HTMLCollection [ < div>, < div>,< div#dropdown>]
注意 : 获取数组形式,childNodes;
document.getElementById(“test”).childNodes;
打印输出: NodeList [ #text ”
“, < div>, #text ”
“, < div>, #text ”
“, < div#dropdown>, #text ”
” ]
注意 : 遍历子节点。
//可复用 参数=目标元素
//清除无用节点,返回保存有效子节点的新目标元素。
function del_ff(elem){
var elem_child = elem.childNodes;
for(var i=0; i<elem_child.length;i++){
if(elem_child[i].nodeName == "#text" && !/\s/.test(elem_child.nodeValue))
{
elem.removeChild(elem_child[i]);
};
}
}
实例:
var s = document.getElementById("test");
del_ff(s);
console.log(s.childNodes);
打印输出: NodeList [ <div>, <div>, <div#dropdown> ]
var par=s.parentNode;
var ns=s.nextSibling; //previouSilbing 上一个兄弟节点;
console.log(s.childNodes[0].nextSibling);
打印输出: <div> (2)
var fc=s.firstChild; // lastChild. 最后一个子节点;
console.log(s.childNodes[0].firstChild);
打印输出: #text "ppp"
下面介绍JQUERY的父,子,兄弟节点查找方法
jQuery.parent(expr) 找父亲节点,可以传入expr进行过滤,比如 ("span").parent()或者 (“span”).parent(“.class”)
jQuery.parents(expr),类似于jQuery.parents(expr),但是是查找所有祖先元素,不限于父元素
jQuery.children(expr).返回所有子节点,这个方法只会返回直接的孩子节点,不会返回所有的子孙节点
jQuery.contents(),返回下面的所有内容,包括节点和文本。这个方法和children()的区别就在于,包括空白文本,也会被作为一个
jQuery对象返回,children()则只会返回节点
jQuery.prev(),返回上一个兄弟节点,不是所有的兄弟节点
jQuery.prevAll(),返回所有之前的兄弟节点
jQuery.next(),返回下一个兄弟节点,不是所有的兄弟节点
jQuery.nextAll(),返回所有之后的兄弟节点
jQuery.siblings(),返回兄弟姐妹节点,不分前后
jQuery.find(expr),跟jQuery.filter(expr)完全不一样。jQuery.filter()是从初始的jQuery对象集合中筛选出一部分,而jQuery.find()
的返回结果,不会有初始集合中的内容,比如 ("p"),find("span"),是从<p>元素开始找<span>,等同于 (“p span”)