【问题标题】:How to find the index of a row in a table using jquery如何使用jquery在表中查找行的索引
【发布时间】:2019-07-22 19:37:17
【问题描述】:

我正在尝试在表中查找行的索引。我正在尝试使用以下代码,但我的索引似乎为 -1。

$(document).ready(function()
{
    $("tr").click(function (){
        var index = $("table").index($(this));
        $("span").text("That was row index #" + index);
    });
});

使用看起来像这样的html;

<table>
<tbody>
    <tr><td>click</td></tr>
    <tr><td>click</td></tr>
    <tr><td>click</td></tr>
    <tr><td>click</td></tr>
</tbody>

谢谢

【问题讨论】:

  • var index = $(this).index();

标签: jquery


【解决方案1】:

你试过了吗:

$("tr").index(this)

文档显示只是通过了这一点,并且前面的选择应该是找到节点的位置。如果需要在特定表中查找(并且有多个),可能需要提供一些上下文:

// haven't tested this
$("tr", $(this).closest("table")).index(this) 

【讨论】:

  • 从行内的一个孩子开始, $(this).closest("tr").index() 就可以了。此答案中的第二个选项不起作用。
  • 原来this 不需要在index 函数中传递,因为它每次都给我-1,使用没有this 参数可以正常工作
  • Joshua 的解决方案对我来说效果很好。我需要点击 TD 中的按钮。
【解决方案2】:

试试:

var index = $("table tr").index(this);

index() 的文档说:

搜索每个匹配的元素 对象并返回该对象的索引 元素,如果找到,从零开始。 如果传递了一个 jQuery 对象,则只有 检查第一个元素。

您需要在&lt;tr&gt; 元素的集合上调用index(),而不是父&lt;table&gt;

【讨论】:

  • 非常有意义。但在所有方面都获得 -1。
  • @stevek 我编辑了答案以删除 this 周围的 $(),因为我不确定 jQuery 是否会在调用具有相同节点实例的 $ 时返回相同的对象实例.
  • 你不需要传递this作为参数只需删除它并使用.index()它将正常工作@Winnemucca
【解决方案3】:

根据 Rob 在特定表中查找索引的答案,这对我有用。

var index = $('tr', $(this).closest("table")).index(this);

【讨论】:

    【解决方案4】:

    我刚刚发现了一个有趣的技巧,它基本上包括计算以前的兄弟姐妹:

    var tr = $(some_selector);
    var rowIndex = tr.prevAll().length;
    

    这样,如果这是第一个tr,你将得到0,如果这是第四个tr,你将得到3,等等。

    为了它,另一个选项使用index(),这样你就不必知道如何选择包含表:

    var rowIndex = tr.parent().children().index(tr);
    

    【讨论】:

      【解决方案5】:

      获取td对象,其父索引为tr index

      $(this).parent().index()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-26
        • 2016-06-11
        相关资源
        最近更新 更多