Answers:
$('#my_table > tbody > tr').eq(i-1).after(html);
索引是从0开始的,因此要成为第4行,i-1
由于.eq(3)
需要是第4行,因此您需要返回到第3行(2
)并将其插入.after()
。
.before(html)
如果你想要那个索引之前,将其插入
注意:
$('#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
我知道它来晚了,但是对于那些只想使用来实现它的人JavaScript
,您可以按照以下方法进行操作:
tr
单击的电流的引用。tr
DOM元素。tr
父节点。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;
}
这将在单击按钮的行的正下方添加新表行。
试试这个:
$("table#myTable tr").last().after(data);
加上尼克·克雷弗(Nick Craver)的答案,还要考虑rossisdead提出的要点,如果存在这种情况,例如必须将其追加到一个空表中,或者在某一行之前,我会这样做:
var arr = []; //array
if (your condition) {
arr.push(row.id); //push row's id for eg: to the array
idx = arr.sort().indexOf(row.id);
if (idx === 0) {
if (arr.length === 1) { //if array size is only 1 (currently pushed item)
$("#tableID").append(row);
}
else { //if array size more than 1, but index still 0, meaning inserted row must be the first row
$("#tableID tr").eq(idx + 1).before(row);
}
}
else { //if index is greater than 0, meaning inserted row to be after specified index row
$("#tableID tr").eq(idx).after(row);
}
}
希望它能帮助某人。