views:

30

answers:

2

Basically, is there a way to write

a.children('.outer').children('.inner')

without the intermediate selector? I can't write

$('.outer > .inner', a)

because I don't want to do full-depth search against a — I know that the .outer elements are immediate children of a.

It's partly a matter of "elegance", but partly because I'm trying to avoid "throwaway" element sets. Yes, jQuery may in effect do the same thing, but it has a better chance of optimizing (at least in theory), when it knows the full query's intent.

+1  A: 

The ">" selector is what you need. It will select direct child element, not descendants of all levels: http://api.jquery.com/child-selector/

Juriy
+2  A: 

You can do this to start with the immediate children, not doing a full-depth search on .outer to start:

$('> .outer > .inner', a)

Or, slightly different, this:

a.find('> .outer > .inner')

You can see a demo of both working here.

Nick Craver
By God, you're right! I didn't know you could use that at the front of a query.
harpo