Подтвердить что ты не робот

Как найти индекс строки в таблице с помощью 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>

Спасибо

4b9b3361

Ответ 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()