谢谢各位!jQuery的遍历同胞结构设计函数为什么是elem.nodeType !== 1而不是elem.nodeType !== 9(祖先遍历结构设计是判断nodeTyp是否为9)
function sibling(cur, dir) {
while ((cur = cur[dir]) && cur.nodeType !== 1) {}
return cur;
}
找到当前cur第一个nodeType为1的兄弟节点(因为 li 和 li 之间其实有空白的文本节点,查找兄弟节点时会找到这些文本节点,但并不是我们想要的,文本节点的nodeType为3,满足nodeType !== 1 这个条件,再次进入循环,直到找到我们要的节点为止)
这样写匹配到第一个后就跳出循环,直接return。难不成你还想继续while下去?
我竟然也纠集了好久,就是找到nodeType==1的元素、!==一直堪称==
祖先遍历是一直向上查找,知道找到nodeType==9,也就是根节点document。而同胞遍历的是兄弟节点,判断的是html元素(大写的HTML标签),nodeType==1。