I couldn't find a quick answer to this problem …
I'm inside a click-event and using $(this)
I'm trying to select an element three levels up without knowing what selector it has.
$(this).parent().parent().parent().attr('id')
This works fine, but is there a better way in doing this?
Like parent(3x) or similar?
You can try using eq() with parents(). eq() is zero base index so first element will have zero index and third element will have 2 index.
$(this).parents().eq(2).attr('id');
This is equal to:
$(this).parent().parent().parent().attr('id');
The .parents() method allows us to search through the ancestors of these elements in the DOM tree and construct a new jQuery object from the matching elements ordered from immediate parent on up; the elements are returned in order from the closest parent to the outer ones, Reference
Use .eq() and .parents() like this:
$(this).parents().eq(2).attr("id");
you can also try.
$(this).parents(':eq(2)'); //and then get ID
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