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