Как найти индекс строки в таблице с помощью 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>
Спасибо
Ответы
Ответ 1
Вы пробовали:
$("tr").index(this)
Документация показывает только прохождение этого и что предыдущий выбор должен быть там, где найден node. Если вам нужно найти его в определенной таблице (и их несколько), вам может потребоваться предоставить некоторый контекст:
// haven't tested this
$("tr", $(this).closest("table")).index(this)
Ответ 2
Try:
var index = $("table tr").index(this);
В документации для index()
говорится:
Ищет каждый согласованный элемент для объекта и возвращает индекс элемент, если он найден, начиная с нуля. Если объект jQuery передан, проверяется первый элемент.
Вам нужно вызвать index()
в коллекции элементов <tr>
, а не в родительском <table>
.
Ответ 3
На основании ответа Роба на поиск индекса в конкретной таблице это сработало для меня.
var index = $('tr', $(this).closest("table")).index(this);
Ответ 4
Я только что нашел интересный трюк, который в основном состоит в подсчете предыдущих братьев и сестер:
var tr = $(some_selector);
var rowIndex = tr.prevAll().length;
Таким образом, вы получите 0, если это первый tr
, 3, если это 4-й tr
и т.д.
Просто ради этого есть еще одна опция, использующая index()
, которая избавляет вас от необходимости знать, как выбрать содержащую таблицу:
var rowIndex = tr.parent().children().index(tr);
Ответ 5
Получить объект td и его родительский индекс tr index
$(this).parent().index()