开发者

How to select elements from a set that are children of another element

The title is a bit confusing but here's what I'm after:

  • I have a set of elements containing all the h3 elements in a page.

    In jQuery terms: var mySet = $('h3').

  • I also have an div element var myContainer开发者_StackOverflow = $('div#foo')

  • I need to find all items in the set mySet that are children of myContainer.

Any ideas? I bet there's some magical one liner for this but I cannot think of any. I'd rather not loop through every element in the set manually and use .closest(myContainer) or something like that to determine the relationship.

Note that in my scenario, I cannot use a new selector like $('div#foo h3') (that would be too easy) as I don't have access to the actual selector values. So it has to be dynamic.


You can use the .filter method to reduce the elements to those that match a specific selector:

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

You can also get the selector used in a jQuery object by accessing the .selector property.


Interesting. Assuming you have two jQuery collections and you don't know the selectors:

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

filter seems to work:

myContainer.children().filter(mySet)

Keep in mind, however, that this is undocumented as far as I can see, so it may change.
.not can also accept a collection of elements, which works similarly.

Working example: http://jsbin.com/owuru


I don't know about jQuery but in YUI3 nodelists returned from a selector query contain the actual selector string used to create the list, perhaps jquery exposes similar functionality?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜