js模仿jquery里的几个方法siblings,next, pre,nextAll,preAll

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++){
            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;
   }
}
next,pre函数
/*选取紧邻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;
}

nextAll,preAll函数

注意nextAll,preAll函数会用到next,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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值