jQuery的遍历同胞结构设计函数为什么是elem.nodeType !== 1呢?谢谢各位!

来源:1-5 遍历同胞(下)

Devisn

2015-08-30 11:38

谢谢各位!jQuery的遍历同胞结构设计函数为什么是elem.nodeType !== 1而不是elem.nodeType !== 9(祖先遍历结构设计是判断nodeTyp是否为9)

function sibling(cur, dir) {

  while ((cur = cur[dir]) && cur.nodeType !== 1) {}

  return cur;

}


写回答 关注

4回答

  • 戴琪琪
    2018-12-07 10:55:27

    找到当前cur第一个nodeType为1的兄弟节点(因为 li 和 li 之间其实有空白的文本节点,查找兄弟节点时会找到这些文本节点,但并不是我们想要的,文本节点的nodeType为3,满足nodeType !== 1 这个条件,再次进入循环,直到找到我们要的节点为止)

  • 华子_0003
    2016-09-17 23:24:28

    这样写匹配到第一个后就跳出循环,直接return。难不成你还想继续while下去?

  • 旧约丿巴黎埃菲尔情
    2016-06-07 23:09:52

    我竟然也纠集了好久,就是找到nodeType==1的元素、!==一直堪称==

  • 王不二
    2015-12-02 15:46:58

    祖先遍历是一直向上查找,知道找到nodeType==9,也就是根节点document。而同胞遍历的是兄弟节点,判断的是html元素(大写的HTML标签),nodeType==1。

    linhaa

    那为什么是判断!==而不是==呢,不是要判断他的兄弟节点nodetype==1吗? 还是因为nodeType的类型不是数字1? 谢谢解答

    2016-05-12 12:00:39

    共 1 条回复 >

jQuery源码解析(DOM与核心模块)

由浅入深的剖析jQuery库的设计与实现,揭开框架背后的秘密

71439 学习 · 82 问题

查看课程

相似问题