如何使用jquery在表中查找行的索引

时间:2009-01-22 16:42:43

标签: jquery

我正在尝试查找表中行的索引。我正在尝试使用以下代码,但我似乎得到-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>

由于

5 个答案:

答案 0 :(得分:38)

你试过了吗?

$("tr").index(this)

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

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

答案 1 :(得分:11)

尝试:

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

index()的文档说:

  

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

您需要在index()个元素的集合上调用<tr>,而不是父<table>

答案 2 :(得分:2)

基于Robs回答在特定表中查找索引,这对我有用。

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

答案 3 :(得分:1)

我刚发现了一个有趣的伎俩,其基本原理是计算以前的兄弟姐妹:

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

这样,如果这是第一个tr,您将获得0,如果这是第4个tr,则为3,等等。

只是为了它,使用index()的另一个选项,这使您不必知道如何选择包含的表:

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

答案 4 :(得分:0)

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

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