js模仿jquery里的几个方法next,pre,nextAll,preAll
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
js模仿jquery⾥的⼏个⽅法next,pre,nextAll,preAll /*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++){
if(!children[i].flag && children[i].nodeType === 1 && children[i].nodeName !== 'SCRIPT'){ //过滤⼀下script节点
tempArray.push(children[i]);
}
}
return tempArray.length ? tempArray : null;
}
else{
return null;
}
}
/*选取紧邻node节点的下⼀个兄弟节点*/
function next(node){
var next = node.nextSibling;
if(next !== null && next.nodeType === 3){ //防⽌内联元素在ie下出现的空⽩节点和⽕狐下的空⽩节点
return next.nextSibling;
}
return next;
}
/*选取紧邻node节点的上⼀个兄弟节点*/
function pre(node){
var pre = node.previousSibling;
if(pre !== null && pre.nodeType === 3){ //防⽌内联元素在ie下出现的空⽩节点和⽕狐下的空⽩节点
return pre.previousSibling;
}
return pre;
}
/*选取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;
}。