【问题标题】:How to select first row of the first table in an html page using jQuery?如何使用jQuery选择html页面中第一个表的第一行?
【发布时间】:2010-10-24 17:51:36
【问题描述】:

假设我的 HTML 页面中有多个表(没有它们的 'id' 属性),那么如何使用 jQuery 选择器选择第一个表的第一行或任何特定表?

【问题讨论】:

    标签: jquery css-selectors


    【解决方案1】:
    $("table:first > tr:first")
    

    $("table:first").find("tr:first")
    

    $("table:first").children("tr:first")
    

    $("table").eq(0).children("tr").eq(0)
    

    所以如果我理解后续问题...

    $("table:eq(1) tr:has(table:eq(2))")
    

    翻译为:如果 tr 有第三个表,则在第二个表中获取任何 tr

    $("table").eq(1).children("tr:has(table:eq(2))")
    

    【讨论】:

    • 感谢乍得,它的工作(只有第二个选项)。但下一个问题是,如果我的页面中包含 3 个表,我是否要选择第二个表的任何行。您建议的命令仅对第一个或最后一个表成功;中间表呢?谢谢
    • jQuery 非常灵活,我需要查看您的 html 结构以提供准确的示例。例如,如果您的表中有 标签,我的代码中的第一个示例将不起作用。请发布一些示例 HTML,我可以启动选择器
    • 我建议将.children("tr:first") 换成.find('> tbody > tr, > tr'),因为some browsers add tbody to all tables and some don't
    【解决方案2】:

    虽然不是 jQuery 特定的,但我在 w3c selectors page 上被介绍了 dom 选择器。它非常详细,但充满了错综复杂的示例。

    【讨论】:

    【解决方案3】:

    使用 jQuery 的eq() 方法可以指定要获取的元素的索引。
    这将选择在 DOM 中找到的第二个表的第一行

    $('table:eq(1) tr:first')
    

    【讨论】:

    • 实际上将选择第三个表中的第一行。 eq() 从零开始
    【解决方案4】:
    $("tr:first");
    

    【讨论】:

      【解决方案5】:

      可以用来选择第 n 个表中的第 n 行的东西:

      $("table:eq(n) tr:eq(n)")
      

      其中 n 是表或 tr 的从零开始的索引。

      例子:

      $("table:eq(2) tr:eq(4)")
      

      获取第 3 个表的第 5 行。

      【讨论】:

        【解决方案6】:

        @svinto 的回答绝对是完成此任务的最短、最快和最简单的方法。如果您真的关心性能(例如,在任意复杂的 for 循环中选择),这很可能会更快一点:

        $('tr').eq(0)
        

        如果你不需要只使用 jQuery 选择器并且实际上需要DOM <TR> 元素,你可以使用:

        $('table')[0].rows[0]
        

        或者:

        $('tr')[0]
        

        【讨论】:

          猜你喜欢
          相关资源
          最近更新 更多
          热门标签