6

[编辑]我已经改写了这个问题并删除了这个例子,因为它似乎让你感到困惑。麻烦您了。

我需要匹配匹配选择器的第一个后代。

如果多个元素与此选择器匹配但位于单独的树中(即如果一个不是另一个的父级),那么我想同时选择它们。

确切的 DOM 结构是未知的,所以我不能使用.children( )>选择器之类的函数(因为他们希望用户确定实际的 DOM 结构)。

我需要的实际上看起来像.closest( )函数,但用于匹配孩子而不是父母,并且可能同时匹配多个孩子。

4

2 回答 2

1

从 开始的每棵树#B都由.children(); .foo这样一棵树中的每个第一个都是.find('.foo:eq(0)'),所以你应该能够使用它:

$('#B').children(':not(.foo)').andSelf().find('.foo:eq(0)');
于 2012-11-19T05:41:55.797 回答
0

您可以使用 jQuery 插件最近的后代

这实现了广度优先搜索,因此它会检查当前元素的所有子元素,然后才能进入下一个级别。

加载插件或将其添加到您的源代码后,您可以简单地以这种方式调用它:

jQuery('#parent').closestDescendant(".selector", true)

在这里你可以找到该函数的演示:demo mostestDescendant

于 2013-04-09T21:04:37.530 回答