在JQuery中可以很方便地用 elem.siblings() 方法实现查找相邻元素,但在JS中并没有这样的方法,可以用previousSibling和nextSibling结合来实现。
不过在JS中用获取node的方法会有意想不到的多余的空文本,所以需要加入判断条件来判断元素类型。nodeType==1,表示是元素节点。
代码如下:
function siblingElems(elem){
var nodes=[ ];
var _elem=elem;
while((elem=elem.previousSibling)){
if(elem.nodeType==1){
nodes.push(elem);
}
}
var elem=_elem;
while((elem=elem.nextSibling)){
if(elem.nodeType==1){
nodes.push(elem);
}
}
}
使用如下:
var el=document.getElementById("ele");
var sib=siblingElems(el); //获得相邻元素数组