【问题标题】:jQuery: How to combine find and filter on an array of elements?jQuery:如何结合查找和过滤元素数组?
【发布时间】:2011-12-09 01:01:07
【问题描述】:

我有一个元素数组myRoots。我想从数组中找到与某个选择器匹配的所有元素或数组中某个元素的后代(假设是div)。

您可以将其视为myRoots.find('div')myRoots.filter('div') 的组合。我想我可以把它写成$.merge(myRoots.find('div'), myRoots.filter('div')),但想avoid repeating myselfmyRoots 和选择器重复)。有没有更好的办法?

在 XPath 中,这对应于 descendant-or-self axis,您可以写成 $myRoots/descendant-or-self::div

【问题讨论】:

  • 你可以很容易地写一个插件来做到这一点,虽然我会说如果你需要这样做,那么你可能应该重新考虑你的标记。
  • @Ilia,descendant-or-self 在许多树遍历的情况下都有意义,无论是在 HTML、XML 还是许多其他树中。 XPath 在 1999 年有这个轴是有原因的,它在 jQuery 中严重缺失。
  • 我不太同意这样的选择在 HTML 的上下文中是有意义的,但如果你真的想要的话,它是一个非常简单的插件。

标签: jquery dry


【解决方案1】:

编辑

尝试使用: myRoots.find("div").andSelf().filter("div");


你可以这样做:

myRoots.find("div").andSelf();

【讨论】:

  • 这不是它:它会将myRoots中的所有元素添加到结果中,无论它们是否是div。
猜你喜欢
  • 2011-03-28
  • 1970-01-01
  • 1970-01-01
  • 2012-09-17
  • 2020-06-29
  • 2012-02-29
  • 1970-01-01
  • 1970-01-01
  • 2019-05-29
相关资源
最近更新 更多