【问题标题】:jQuery parent selectorsjQuery 父选择器
【发布时间】:2011-03-21 01:06:53
【问题描述】:

是否有一个 jQuery 父选择器可以遍历 DOM 直到找到第一个匹配项?

例如:

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

从我正在使用的 div 中查找行:

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

感觉应该能写出类似的东西

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

但我在文档中找不到任何此类功能。

【问题讨论】:

    标签: jquery dom jquery-selectors dom-traversal


    【解决方案1】:

    您可以为此使用.closest()

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

    如果有帮助,有一个专门用于此的类别,可将您未来的搜索范围缩小到:Tree Traversal

    【讨论】:

    • 感谢和欢呼树遍历链接。我永远不会发现,这似乎是一个名字很糟糕的函数恕我直言。
    • @fearofawhackplanet - 当你搜索 API 时:api.jquery.com 找到一个你知道在同一区域的函数,在右边它会有指向它所属类别的链接,这通常是最快的路线:)
    【解决方案2】:
    $(element).parents('TR:first');
    

    编辑:或者尼克在下面说的 - 忘了那个傻瓜。

    【讨论】:

    • +1 - 这是.closest('tr') 的长期等价物,所以肯定是一个有效的方法:)
    【解决方案3】:
    $('#foo').parent('tr')
    

    【讨论】:

    • 这并不像大多数人期望的那样,它选择父级如果它是&lt;tr&gt;,如果它不是&lt;tr&gt;,你会得到一个空集。选择器是一个过滤器,而不是一个搜索词,它相当于该步骤的.parent().filter('tr') :)
    猜你喜欢
    • 2011-04-19
    • 1970-01-01
    • 2011-03-31
    • 2011-09-28
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多