jQuery父级选择器

5

有没有一个jQuery父级选择器,可以在DOM中向上遍历直到找到第一个匹配项?

例如:

<tr>
    <td>
        <div id="foo">hello!</div>
    </td>
</tr>

为了从div中找到行,我使用以下代码:

$('#foo').parent().parent();

感觉应该能够像下面这样写:

$('#foo').firstParent('tr');

但是我在文档中找不到任何类似的函数。

3个回答

6
您可以使用 .closest() 来实现此功能:
$('#foo').closest('tr');

如果有帮助的话,可以使用专门的类别来缩小您将来搜索的范围:树遍历

感谢你提供的树遍历链接,真是太棒了。我自己肯定找不到,这个函数名起得实在有点糟糕。谢谢! - fearofawhackplanet
@fearofawhackplanet - 当你在搜索API:http://api.jquery.com/时,找到一个你知道属于同一领域的函数,然后在右侧它会有链接到它所属的类别,那通常是最快的路线 :) - Nick Craver

1
$(element).parents('TR:first');

编辑:或者像下面Nick说的那样 - 我忘了那个家伙。


+1 - 这是.closest('tr')的长写等效形式,因此肯定是一种有效的方法 :) - Nick Craver

0
$('#foo').parent('tr')

这个并不像大多数人期望的那样工作,它只有在选择到父元素是<tr>时才会生效,如果不是<tr>,则会返回一个空集合。该选择器是一种过滤器,而不是搜索条件,它相当于.parent().filter('tr')这一步骤 :) - Nick Craver

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接