I don't think I stated my problem fully. What I'm trying to do it process the elements recursively, so using the <ul>'s as an example:
1. Find the shallowest <ul>'s (Karl's solutions would work here). 2. For each <ul> found: 3. Add content to the <ul>. 4. Find the next shallowest <ul> within each <ul>. 5. Recurse from step 2 (until there are no more deeper <ul>'s). var dostuff = function(elem) { $(elem).findShallowest('ul').each(function() { // do stuff, add content dostuff(this); }); } It's important that the elements are processed in this manner, as content is added which may include more <ul>'s which in turn need processing. Also the exact structure is not known, so I can't rely on child '>' ops. I think it could be done by stopping find() from going any deeper once it finds match, but from looking at the jQuery src, find() is a little baffling. Thanks for help so far - Mark. On Nov 17, 7:28 pm, Karl Swedberg <[EMAIL PROTECTED]> wrote: > Hi Mark, > > I took a look at your original post again, and from your description > there it looks like this would work: > > $('ul').filter(function() { > return !$(this).parents('ul').length; > > }) > > --Karl > > ____________ > Karl Swedbergwww.englishrules.comwww.learningjquery.com > > On Nov 17, 2008, at 10:58 AM, Mark Gibson wrote: > > > > > The trouble is that the elements i'm looking for are not necessarily > > direct children of the container, > > so > isn't going to work. What I really need is to stop jQuery from > > searching any deeper once it > > finds the first <ul>, but continue the search at the same and > > shallower levels. > > Is there a way to do this with a $.expr[':'] plugin? > > > On Nov 11, 11:24 am, Klaus Hartl <[EMAIL PROTECTED]> wrote: > >> That won't work. :first-child will give you *all* uls that are the > >> first child of any element: > > >> <div id="container"> > >> <ul><!-- is first child --> > >> <li> > >> <ul> ... </ul><!-- is first child --> > >> </li> > >> </ul> > >> </div> > > >> If you need the topmost ul use the ">" combinator: > > >> $('#container > u') > > >> Oh, jQuery has some documentation about > >> selectors:http://docs.jquery.com/Selectors > > >> En plus knowing the spec doesn't hurt > >> either:http://www.w3.org/TR/CSS21/selector.htmlhttp://www.w3.org/TR/css3-sel... > > >> --Klaus > > >> On 11 Nov., 02:07, "Hector Virgen" <[EMAIL PROTECTED]> wrote: > > >>> Oops, it's actually $('#container ul:first-child') > >>> Here's a nifty page of CSS3 > >>> selectors:http://www.w3.org/TR/2001/CR-css3-selectors-20011113/#selectors > > >>> -Hector > > >>> On Mon, Nov 10, 2008 at 5:06 PM, Hector Virgen > >>> <[EMAIL PROTECTED]> wrote: > >>>> $('#container ul:first') should give you the first UL in the > >>>> container > >>>> -Hector > > >>>> On Mon, Nov 10, 2008 at 4:50 PM, Mark Gibson > >>>> <[EMAIL PROTECTED]> wrote: > > >>>>> Anyone know how I can find the topmost elements of a certain > >>>>> type, eg. > > >>>>> Say I have several <ul> lists on a page, which in turn contain > >>>>> sub- > >>>>> lists, and so on. > >>>>> Is there a selector I can use to find all the topmost <ul> > >>>>> elements. > > >>>>> I've been raking my brains over this, and can't see a way with css > >>>>> style selectors, > >>>>> have i overlooked something? > > >>>>> Ideally I'd like to do: > >>>>> $('ul:topmost') > > >>>>> or: > >>>>> $('#container ul:topmost') > > >>>>> Cheers > >>>>> - Mark