这 写错了吧while ((elem = elem[dir]) && elem.nodeType !== 9) {

来源:1-2 jQuery的遍历结构设计

fragile

2015-06-12 16:40

while ((elem = elem[dir]) && elem.nodeType !== 9) {


一个等号?

写回答 关注

3回答

  • pursky
    2016-02-05 00:48:04
    (elem = elem[dir]) && elem.nodeType !== 9
    =>
    elem = elem[dir] //返回elem的dir属性,并赋值给elem(这个属性的值是节点类型,例如dir="parentNode")
    &&
    elem.nodeType !== 9   //赋值后的elem的nodeType 不等于9,也就是赋值后的elem不是document

    当满足上面的两个条件的时候,继续循环。那么什么时候退出循环呢?

    1. 调用dir属性无法获取到值

    2. 调用dir属性得到的节点是document

  • 建博
    2015-12-23 12:00:00

    这一步是将循环条件中设置当前元素为上一次执行循环时的元素的父节点,以便向上遍历,并且直到当前元素为document对象本身为止

  • 艾伦Aaron
    2015-06-15 08:30:48

    没有错误,取出对应的值

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

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

71439 学习 · 82 问题

查看课程

相似问题