General:
How can I select the first matching ancestor of an element in jQuery?
Example:
Take this HTML block
<table> <tbody> <tr> <td> <a href="#" class="remove">Remove</a> </td> </tr> <tr> <td> <a href="#" class="remove">Remove</a> </td> </tr> </tbody> </table>
I can remove a row in the table by clicking "Remove" using this jQuery code:
$('.remove').click(function(){ $(this).parent().parent().hide(); return false; });
This works, but it's pretty fragile. If someone puts the <a>
into a <div>
, for example, it would break. Is there a selector syntax in jQuery that follows this logic:
"Here's an element, now find the closest ancestor that matches some selection criteria and return it"
Thanks
To select all ancestor elements of an element, the parents() method is used. This method is used to find all the parent elements related to the selected element. This method traverse all the levels up the selected element and return that all elements.
Definition and UsageThe closest() method searches up the DOM tree for elements which matches a specified CSS selector. The closest() method starts at the element itself, then the anchestors (parent, grandparent, ...) until a match is found. The closest() method returns null() if no match is found.
That would be closest
:
$(this).closest('tr').hide();
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