如何从集合中选择另一个元素的子元素

时间:2010-06-16 09:00:09

标签: jquery

标题有点令人困惑,但这就是我追求的目标:

  • 我有一组包含页面中所有h3元素的元素 在jQuery术语中:var mySet = $('h3')

  • 我还有一个div元素var myContainer = $('div#foo')

  • 我需要查找集mySet中属于myContainer子项的所有项目。

有什么想法吗?我打赌这有一些神奇的单线,但我想不出任何。我宁愿手动循环遍历集合中的每个元素,并使用.closest(myContainer)或类似的东西来确定关系。

请注意,在我的场景中,我不能使用像$('div#foo h3')这样的新选择器(这太简单了),因为我无法访问实际的选择器值。所以它必须是动态的。

3 个答案:

答案 0 :(得分:2)

您可以使用.filter方法将元素减少为与特定选择器匹配的元素:

mySet.filter("div#foo > *");

您还可以通过访问.selector属性来获取jQuery对象中使用的选择器。

答案 1 :(得分:1)

有趣。假设您有两个jQuery集合,而不知道选择器

var myContainer = $('div');
var mySet = $('h3:even');

filter似乎有效:

myContainer.children().filter(mySet)

请注意,据我所知,这是 undocumented ,因此可能会发生变化。
.not也可以接受一系列元素,它们的工作方式类似。

工作示例:http://jsbin.com/owuru

答案 2 :(得分:0)

我不知道jQuery但是在YUI3中,从选择器查询返回的节点列表包含用于创建列表的实际选择器字符串,或许jquery公开了类似的功能?