【问题标题】:Jquery Get last row of table within last element in a seriesJquery获取系列中最后一个元素内的最后一行表
【发布时间】:2012-10-08 17:44:25
【问题描述】:

我有一系列基于部分的幻灯片:

<div id="slides">
    <section id="first">
        <section>
            <table>
                <thead>
                </thead>
                <tbody>
                    <tr id="somethingUnique">
                    ...
                    </tr>
                </tbody>
            </table>
        </section>
        <section>
            <table>
                <thead>
                </thead>
                <tbody>
                    <tr id="somethingUnique">
                    ...
                    </tr>
                </tbody>
            </table>
        </section> 
       ...
    </section>
</div>

我需要从#first section的最后一个部分的表格中选择抓取最后一行的ID。

我正在使用以下 Jquery,返回“未定义”...有什么想法吗?

    var lastListItem = $('#first:last-child table>tbody>tr:last').attr("id");
    alert(lastListItem);

【问题讨论】:

  • 我创建了一个fiddle,它似乎返回了somethingUnique

标签: javascript jquery html ajax


【解决方案1】:
$('#first table:last tr:last')

或:

$('#first tr:last')

http://jsfiddle.net/hunter/QMzHH/

【讨论】:

    【解决方案2】:
    var lastListItem = $("#first").find("section").last().find("tr").last().attr("id");
    

    我更喜欢使用 [0].id 而不是 .attr("id") 因为它少了一个方法调用;但是,如果您不确定在该 DOM 位置始终有一个表格,则 attr 更安全。

    【讨论】:

    • 您可以使用伪选择器来查找项目,但我选择使用链式方法编写答案以获得更好的性能。
    • 你有没有测量出这个解决方案在支持querySelectorAll()的浏览器上实际上更快?
    • @FrédéricHamidi 不,根据浏览器的不同,querySelectorAll 可能会更快。但是,它仍然是一种需要解析长字符串以确定要在 DOM 中查找哪种元素的方法。 I prefer utilizing querySelectorAll (or pseudo-selectors in jQuery) when the selector is shorter, not longer.
    • 我看不出对find()last() 的单独调用如何使其更快,解析选择器不是瓶颈。您需要展示一些事实来支持您的主张
    【解决方案3】:
    var lastListItem = $('#first section:last  table tr:last').attr("id");
    

    【讨论】:

      【解决方案4】:

      .find():

      获取当前匹配集合中每个元素的后代 元素,由选择器、jQuery 对象或元素过滤。

      ​$("#first")​.find("tr:last").attr("id")
      

      或者在这种情况下更简单:

      $("#first tr:last").attr("id")
      

      EXAMPLE

      【讨论】:

        【解决方案5】:

        其他答案有效,但您尝试的问题是 :last-child 必须应用于子元素 (section),而不是父元素 (#first)。以下应该工作

        $('#first section:last-child table>tbody>tr:last').attr("id");
        

        可以简化为

        $('#first section:last-child tr:last-child').attr("id");
        

        http://jsfiddle.net/e7mUD/1

        【讨论】:

          猜你喜欢
          • 2017-02-18
          • 1970-01-01
          • 2014-05-01
          • 2010-10-30
          • 1970-01-01
          • 2022-11-15
          • 2022-01-01
          • 2012-10-21
          • 2012-04-02
          相关资源
          最近更新 更多