How To Select First Ancestor That Matches A Selector?

Posted by Zach on Stack Overflow See other posts from Stack Overflow or by Zach
Published on 2010-05-19T15:38:07Z Indexed on 2010/05/19 15:40 UTC
Read the original article Hit count: 161

Filed under:
|

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

© Stack Overflow or respective owner

Related posts about jQuery

Related posts about jquery-selectors