Could you do something like this? $(this).children().length < 1 ? text = $(this).text() : text = $ (this).children(':last-child').text();
Cheers, Oliver On Jun 21, 5:06 pm, Jack Killpatrick <[EMAIL PROTECTED]> wrote: > Hi All, > > Wondering if anyone can help me out with this... > > I have a list like this and want to select the "innermost" text from > each LI: > > <li>Item One</li> > <li><a href="yadda">Item Two</a></li> > <li><div class="something"><a href="ya">Item Three</a></div></li> > <li><a href="ya">Item Four</a></li> > <li>Item Five</li> > > I want to be able to perform an operation using each result (the results > being "Item One", "Item Two", "Item Three", "Item Four", "Item Five"). > If the LI's all have an <a> tag inside of them, I've found that this works: > > var text; > $('#myList li').each(function(){ > text = $('*',this).html(); > // do something using the text > > }); > > But that only works for cases Two and Four in my example above (not the > cases where the text is bare inside the LI or there's an additional > wrapper in the LI. I'm thinking I'll need to do something recursively > using the content of each LI or maybe there are some existing jquery > selectors that can do what I'm looking for. > > Any ideas? > > Oh, if this got a little more fancy (or was easier to do), if we had a > case like this, it would get only the "first" text it came across ("Item > Six"): > > <li>Item Six<div class="something"><a href="ya">Some text</a></div></li> > > Thanks, > Jack