【JS实现JQuery方法】siblings、next、pre、nextAll、preAll
8370次阅读
346人点赞
发布时间: 2021-12-09 10:13:37
扫码到手机查看
siblings
/*siblings函数, 选取node的所有兄弟节点*/
function siblings(node){
if(node.nodeType === 1){
//给当前节点打上一个标志
node.flag = true;
var children = node.parentNode.childNodes,
length = children.length,
tempArray = [],
i = 0;
for(; i < length; i++){
//过滤一下script节点
if(!children[i].flag && children[i].nodeType === 1 && children[i].nodeName !== 'SCRIPT'){
tempArray.push(children[i]);
}
}
return tempArray.length ? tempArray : null;
}
else{
return null;
}
}
next和pre
/*选取紧邻node节点的下一个兄弟节点*/
function next(node){
var next = node.nextSibling;
//防止内联元素在ie下出现的空白节点和火狐下的空白节点
if(next !== null && next.nodeType === 3){
return next.nextSibling;
}
return next;
}
/*选取紧邻node节点的上一个兄弟节点*/
function pre(node){
var pre = node.previousSibling;
//防止内联元素在ie下出现的空白节点和火狐下的空白节点
if(pre !== null && pre.nodeType === 3){
return pre.previousSibling;
}
return pre;
}
nextAll和preAll
/*选取node节点后的所有兄弟节点*/
function nextAll(node){
var nextNode = next(node),
nodeArray = [];
while(nextNode != null){
nodeArray.push(nextNode);
nextNode = next(nextNode);
}
return nodeArray;
}
/*选取node节点前的所有兄弟节点*/
function preAll(node){
var preNode = pre(node),
nodeArray = [];
while(preNode != null){
nodeArray.push(preNode);
preNode = pre(preNode);
}
return nodeArray;
}