Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How To Select First Ancestor That Matches A Selector?

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

like image 575
Zach Avatar asked May 19 '10 15:05

Zach


People also ask

Which method is used to get all ancestors of the selected element?

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.

How do you use nearest?

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.


1 Answers

That would be closest:

$(this).closest('tr').hide(); 
like image 101
Kobi Avatar answered Sep 19 '22 14:09

Kobi