【问题标题】:Which is fastest? closest() vs manual traversing in jQuery [closed]哪个最快?最接近()与jQuery中的手动遍历[关闭]
【发布时间】:2013-09-23 18:18:28
【问题描述】:

我有这个代码

<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');

【问题讨论】:

  • 第一个最快,因为第二个永远找不到你需要的。
  • jsperf.com - 满足您所有“最快”的 js 需求。
  • .closest 并非字面意思表示“最接近”。它的意思是“第一个匹配的父母”。
  • 您的更新使答案无效。
  • 我第一次提出问题-1,但这是因为您的问题选项根本错误,您进行了重大修改而不是关闭并提出新问题

标签: javascript jquery performance dom


【解决方案1】:

它们做不同的事情。

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

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

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

编辑:问题已被大量编辑,但.closest() 仍然没有按照您的想法进行。现在你想要$('.LinkB').siblings(".LinkG");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多