2009-01-22 60 views
16

我试图找到表中某一行的索引。我试图使用下面的代码,但我似乎得到-1的索引。如何使用jQuery查找表中某一行的索引

$(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> 

感谢

+0

var index = $(this).index(); – 2017-05-04 15:15:24

回答

31

你试过:

$("tr").index(this) 

文档显示刚好路过这个那个前面的选择应该是一个节点被发现。如果你需要找到它在一个特定的表(有多个),你可能需要提供一些背景:

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

尝试:

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

index()文档说:

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

你需要调用index()<tr>元素,不是父<table>的集合。

+0

非常有意义。尽管如此,尽可能获得-1。 – Winnemucca 2016-11-21 22:06:22

+0

@stevek我编辑了回答,在`this`附近删除`$()`,因为我不确定jQuery是否会在调用`$`时使用相同的节点实例返回相同的对象实例。 – 2016-11-22 13:05:56

2

基于剥夺答案找到索引特定的表,这个工作对我来说。

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