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; }

你可能感兴趣的:(jquery)