I am struggling with how to select a particular element with jQuery. Conditions outlined here:
this
references a span
.span
may be a child, grand child, or great grand child, but somewhere up the hierarchy, it's contained by a td
.span
inside of the td
.span
may be this
, or it may be another span
.span
tags to be selected is a direct child of the containing td
, so last-child
is workable. However, for future flexibility a solution that doesn't assume it's a direct child is preferred.So far, I am using this to select the correct parent element:
$(this).parents('td')
I don't know how to traverse back down the DOM tree to get the final span
inside of the selected td
. Thanks!
Edit
Per my comments below, would also be nice to select from a span
or div
, whichever is last.
$(this).parents('td').children('span:last');
should do the trick.
Edit
I didn't notice your desire to not only deal with immediate children. If you want all decendants, then you would use
$(this).parents('td').find('span:last')
I had assumed the span
would always be a child of the td
.
Final Edit
For posterity's sake (and to make it easier for people to find this answer in the future), since this was already accepted as the answer, Ben came up with a more elegant solution in his answer that I'm going to put here:
$(this).closest('td').find('div,span').filter(':last')
As Ben said, you must be using JQuery 1.3 for closest()
to work. Good work! :-)
I prefer to use closest in this case, instead parents. You don't have to worry about there being two or more 'td' elements in the ancestry.
$(this).closest('td').children("span:last")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With