如何select匹配select器的第一个祖先?

将军

我如何selectjQuery中元素的第一个匹配的祖先?

例如

采取这个HTML块

<table> <tbody> <tr> <td> <a href="#" class="remove">Remove</a> </td> </tr> <tr> <td> <a href="#" class="remove">Remove</a> </td> </tr> </tbody> </table> 

我可以通过点击“删除”使用这个jQuery代码删除表中的一行:

 $('.remove').click(function(){ $(this).parent().parent().hide(); return false; }); 

这工作,但它很脆弱。 例如,如果有人把<a>放到<div> ,就会中断。 jQuery中是否有一个select器语法遵循这个逻辑:

“这是一个元素,现在find匹配一些select标准的最接近的祖先,并将其返回”

谢谢

那将是closest

 $(this).closest('tr').hide(); 

我更喜欢用@Kobi指出(+1),因为它似乎是最简洁的方法。 只要指出,你也可以使用parents

 $(this).parents("tr:first") 

你可以将一个select器传递给我相信的父参数。

 $('.remove').click(function(){ $(this).parents("tr:first").hide(); return false; }); 

或者你可以使用最接近的另一个答案。

 $('.remove').click(function(){ $(this).closest("tr").hide(); return false; }); 

假设你正在使用jQuery 1.4,你可以使用.parentsUntil() ,它将返回所有的祖先,但包括select的祖先。

所以在你的情况下,我会去这样的事情:

 $('.remove').click(function(){ $(this).parentsUntil("tr").parent().hide(); return false; });