[编辑]我已经改写了这个问题并删除了这个例子,因为它似乎让你感到困惑。麻烦您了。
我需要匹配匹配选择器的第一个后代。
如果多个元素与此选择器匹配但位于单独的树中(即如果一个不是另一个的父级),那么我想同时选择它们。
确切的 DOM 结构是未知的,所以我不能使用.children( )
或>
选择器之类的函数(因为他们希望用户确定实际的 DOM 结构)。
我需要的实际上看起来像.closest( )
函数,但用于匹配孩子而不是父母,并且可能同时匹配多个孩子。
[编辑]我已经改写了这个问题并删除了这个例子,因为它似乎让你感到困惑。麻烦您了。
我需要匹配匹配选择器的第一个后代。
如果多个元素与此选择器匹配但位于单独的树中(即如果一个不是另一个的父级),那么我想同时选择它们。
确切的 DOM 结构是未知的,所以我不能使用.children( )
或>
选择器之类的函数(因为他们希望用户确定实际的 DOM 结构)。
我需要的实际上看起来像.closest( )
函数,但用于匹配孩子而不是父母,并且可能同时匹配多个孩子。
从 开始的每棵树#B
都由.children()
; .foo
这样一棵树中的每个第一个都是.find('.foo:eq(0)')
,所以你应该能够使用它:
$('#B').children(':not(.foo)').andSelf().find('.foo:eq(0)');
您可以使用 jQuery 插件最近的后代
这实现了广度优先搜索,因此它会检查当前元素的所有子元素,然后才能进入下一个级别。
加载插件或将其添加到您的源代码后,您可以简单地以这种方式调用它:
jQuery('#parent').closestDescendant(".selector", true)
在这里你可以找到该函数的演示:demo mostestDescendant