답변:
다음 .eq()
과 .after()
같이 사용할 수 있습니다 .
$('#my_table > tbody > tr').eq(i-1).after(html);
인덱스는 그래서 당신은 필요, 4 행으로, 기반 0입니다 i-1
때문에, .eq(3)
4 행을 것입니다, 당신은 3 행 (다시 갈 필요 2
) 삽입 .after()
이 있습니다.
.before(html)
인덱스 앞에 삽입하려면 추가 하십시오
이 시도:
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 기반 색인을 사용합니다.
노트 :
$('#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;
}
버튼을 클릭 한 행 바로 아래에 새 테이블 행이 추가됩니다.
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);
}
}
누군가에게 도움이되기를 바랍니다.