jQuery最近 - 它是如何工作的?

Dro*_*dOS 8 jquery

jQuery 文档说明

对于集合中的每个元素,通过测试元素本身并遍历DOM树中的祖先来获取与选择器匹配的第一个元素.

在我看来,这里的操作词是祖先.这意味着,如果一个人使用

elem.closest(selector)
Run Code Online (Sandbox Code Playgroud)

和选择器不是elem的祖先,什么都不会被发现.但是,在它读取的同一文档中略低一点

向上移动DOM树,直到找到所提供选择器的匹配项

我解释为意味着它会一直到<body>标签来获取它的人.注意,这里没有提到父母祖先.

我写了一个快速的小提琴,似乎表明这是前一种说法是正确的.但是,我认为最好在这里发布,看看是否有其他人可以证实这一点.

Ja͢*_*͢ck 9

.closest()像这样的作品的实现(在伪代码中):

while (node) {
  if (node matches selector) {
    return node;
  }
  node := node.parentNode
} 
Run Code Online (Sandbox Code Playgroud)

换句话说,它仅通过跟随父链来遍历.


Bol*_*ock 5

当它在第二个引用中显示"在DOM树中移动"时,它意味着在第一个引用中"在DOM树中遍历其祖先".引用的两个陈述之间没有区别; 一个是对另一个的解释,恰好稍微不那么具体.