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; }
posted @ 2013-07-22 16:08  TinkBell  阅读(3029)  评论(2编辑  收藏  举报