[javascript] Jquery는 특정 인덱스의 테이블에 새 행을 삽입합니다.

jquery를 사용하여 테이블에 새 행을 추가하거나 앞에 추가하는 방법을 알고 있습니다.

$('#my_table > tbody:last').append(html);

행 (html 변수에 주어진)을 특정 “행 색인”에 삽입하는 방법 i. 그래서 만약 i=3, 예를 들어, 행은 테이블의 4 행으로 삽입됩니다.



답변

다음 .eq().after()같이 사용할 수 있습니다 .

$('#my_table > tbody > tr').eq(i-1).after(html);

인덱스는 그래서 당신은 필요, 4 행으로, 기반 0입니다 i-1때문에, .eq(3)4 행을 것입니다, 당신은 3 행 (다시 갈 필요 2) 삽입 .after()이 있습니다.


답변

이 시도:

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-child1 기반 색인을 사용합니다.


답변

노트 :

$('#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다음과 같이 할 수 있습니다.

  1. tr클릭 된 전류에 대한 참조를 가져옵니다 .
  2. trDOM 요소를 만듭니다 .
  3. 참조 된 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);


답변

사용 EQ 선택기를 n 번째 행 (0 기반) selct하고 사용 후 행을 추가 한 후 , 그래서 :

$('#my_table > tbody:last tr:eq(2)').after(html);

여기서 html은 tr


답변

$('#my_table tbody tr:nth-child(' + i + ')').after(html);