如何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; });