标题有点令人困惑,但这就是我追求的目标:
我有一组包含页面中所有h3
元素的元素
在jQuery术语中:var mySet = $('h3')
。
我还有一个div元素var myContainer = $('div#foo')
我需要查找集mySet
中属于myContainer
子项的所有项目。
有什么想法吗?我打赌这有一些神奇的单线,但我想不出任何。我宁愿不手动循环遍历集合中的每个元素,并使用.closest(myContainer)
或类似的东西来确定关系。
请注意,在我的场景中,我不能使用像$('div#foo h3')
这样的新选择器(这太简单了),因为我无法访问实际的选择器值。所以它必须是动态的。
答案 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
也可以接受一系列元素,它们的工作方式类似。
答案 2 :(得分:0)
我不知道jQuery但是在YUI3中,从选择器查询返回的节点列表包含用于创建列表的实际选择器字符串,或许jquery公开了类似的功能?