JQuery вставляет новую строку в таблицу с определенным индексом
Я знаю, как добавить или добавить новую строку в таблицу с помощью jquery:
$('#my_table > tbody:last').append(html);
Как вставить строку (заданную в переменной html) в определенный "индекс строки" i
. Так что, если i=3
, например, строка будет вставлена как 4-я строка в таблице.
Ответы
Ответ 1
Вы можете использовать .eq()
и .after()
вот так:
$('#my_table > tbody > tr').eq(i-1).after(html);
Индексы основаны на 0, поэтому для 4-й строки вам нужно i-1
, так как .eq(3)
будет четвертой строкой, вам нужно вернуться к третьей строке (2
) и вставить .after()
, который.
Ответ 2
Попробуйте следующее:
var i = 3;
$('#my_table > tbody > tr:eq(' + i + ')').after(html);
или это:
var i = 3;
$('#my_table > tbody > tr').eq( i ).after(html);
или это:
var i = 4;
$('#my_table > tbody > tr:nth-child(' + i + ')').after(html);
Все они помещают строку в том же положении. nth-child
использует индекс на основе 1.
Ответ 3
Примечание:
$('#my_table > tbody:last').append(newRow); // this will add new row inside tbody
$("table#myTable tr").last().after(newRow); // this will add new row outside tbody
//i.e. between thead and tbody
//.before() will also work similar
Ответ 4
Используйте селектор эквалайзеров, чтобы выделить n-й ряд (на основе 0) и добавить строку после нее с помощью after, поэтому:
$('#my_table > tbody:last tr:eq(2)').after(html);
где html является tr
Ответ 5
$('#my_table tbody tr:nth-child(' + i + ')').after(html);
Ответ 6
попробуйте следующее:
$("table#myTable tr").last().after(data);
Ответ 7
Я знаю, что это происходит поздно, но для тех людей, которые хотят реализовать его, используя JavaScript
, вот как это можно сделать:
- Получить ссылку на текущий
tr
, который нажал.
- Создайте новый элемент
tr
DOM.
- Добавьте его к указанному родителю
tr
node.
HTML:
<table>
<tr>
<td>
<button id="0" onclick="addRow()">Expand</button>
</td>
<td>abc</td>
<td>abc</td>
<td>abc</td>
<td>abc</td>
</tr>
<tr>
<td>
<button id="1" onclick="addRow()">Expand</button>
</td>
<td>abc</td>
<td>abc</td>
<td>abc</td>
<td>abc</td>
</tr>
<tr>
<td>
<button id="2" onclick="addRow()">Expand</button>
</td>
<td>abc</td>
<td>abc</td>
<td>abc</td>
<td>abc</td>
</tr>
В JavaScript:
function addRow() {
var evt = event.srcElement.id;
var btn_clicked = document.getElementById(evt);
var tr_referred = btn_clicked.parentNode.parentNode;
var td = document.createElement('td');
td.innerHTML = 'abc';
var tr = document.createElement('tr');
tr.appendChild(td);
tr_referred.parentNode.insertBefore(tr, tr_referred.nextSibling);
return tr;
}
Это добавит новую строку таблицы точно под строку, на которую нажата кнопка.
Ответ 8
$($('#my_table > tbody:last')[index]).append(html);