jquery - 哪个更有效 : .parent().parent().parent() ~或~parents (".foo") ~或~最接近 (".foo")

标签 jquery jquery-selectors

我有一个 A 标签,可以触发它的曾曾曾祖 parent 的动画。以下所有方法都可以,但哪一个最有效,为什么?

$(this).parent().parent().parent().parent().parent().animate(...);

$(this).parents(".foo").animate(...);

$(this).closest(".foo").animate(...);

我怀疑第一个可能是,因为它是最明确的,但出于维护原因(嵌套可能会改变)我更喜欢第二个。它们在实践中似乎都运行顺利。

最佳答案

分析如下:

  • parent()仅在 DOM 树中向上移动一级。
  • parents(".foo")走到根目录并仅选择那些与给定选择器 .foo 匹配的元素。
  • closest(".foo")走到根目录,但一旦元素与选择器 .foo 匹配就停止。

所以我会选择最后一个,closest(".foo")。原因:

  • 这比链接 parent 更好,因为如果您的文档因删除或添加一个层次结构而发生更改,则无需更改 jQuery 代码。
  • 它比 parents(".foo") 更好,因为一旦找到匹配项它就会停止。

关于jquery - 哪个更有效 : .parent().parent().parent() ~或~parents (".foo") ~或~最接近 (".foo"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2264954/

相关文章:

javascript - jQuery 选择器删除满足两个条件的表行

javascript - 使用 require.js 扩展 jquery(多个扩展)?

javascript - 动态使用另一个元素的高度

javascript - 使用 jquery 捕获指定 HTML 表格的单元格值

javascript - 我什至无法让 $().text 正常工作。反而输出一大串代码

javascript - jQuery - 选择两个类之一

jquery - 使用 jQuery 将动态函数添加到元素

javascript - 在 Ajax 回调中访问 `this`,全部在对象内

javascript - 在 Redmine 插件中包含 jquery

jquery - 在行类 "b"之后获取类 "a"行的集合,直到下一个非 -"b"行?