哪个最快?在jQuery中的nearest()vs manual遍历

时间:2013-09-18 20:16:07

标签: javascript jquery performance dom

我有这段代码

<td>
  <div class='DivA'>
    <a href='#' class='LinkA'>Upload</a>
    <a href='#' class='LinkB'>Upload</a>
    <a href='#' class='LinkC'>Upload</a>
    <a href='#' class='LinkD'>Upload</a>
    <a href='#' class='LinkE'>Upload</a>
    <a href='#' class='LinkF'>Upload</a>
    <a href='#' class='LinkG'>Upload</a>
   </div>
   <div class='DivB'>Some Stuff</div>
    </td>

点击LinkB访问LinkG的最有效方法是什么。我已经提出了这些最好的解决方案(在我看来),但是遇到的是最快的解决方案。

$('.LinkB').closest(".LinkG");

$('.LinkB').parent().find('.LinkG');

1 个答案:

答案 0 :(得分:1)

这些做不同的事情。

.closest('.DivB')将遍历DOM树,直到找到与选择器匹配的元素(可能没有)。

.parent().next()会做它看起来会做的事情,找到父母然后是下一个兄弟。

您想要的是.closest('td').find('.DivB'),不要担心微观优化。当DOM稍微改变时它不会中断,并且可以在单个表格单元格的范围内工作,这可能是你需要的。

编辑:问题已经过严格修改,但.closest()仍然没有按照您的想法执行。现在你需要$('.LinkB').siblings(".LinkG");