jQuery는 첫 번째를 제외한 모든 테이블 행을 삭제합니다.


280

jQuery를 사용하여 첫 번째를 제외한 테이블의 모든 행을 어떻게 삭제합니까? 이것은 인덱스 선택기를 사용하는 첫 번째 시도입니다. 예제를 올바르게 이해하면 다음이 작동합니다.

$(some table selector).remove("tr:gt(0)");

"jQuery 객체의 일부 테이블을 래핑 한 다음 해당 행의 요소 인덱스가 0보다 큰 모든 'tr'요소 (행)를 제거합니다."라고 읽습니다. 실제로는 오류를 생성하지 않고 실행되지만 테이블에서 행을 제거하지는 않습니다.

내가 잃어버린 부분은 무엇이며 어떻게 해결합니까? 물론, 나는 자바 스크립트를 사용할 수는 있지만 jQuery를 사용하여 jQuery를 사용 하여이 문제를 해결하고 싶습니다.


왜 주어진 코드가 작동하지 않는지 아는 사람이 있습니까? 필터 선택기를 제거 기능에 넣을 때도 문제가 있습니다
Leto

1
$ (일부 테이블 선택기)가 자식 요소가 아닌 테이블 요소 만 선택하므로 remove 함수를 찾을 'tr'요소가 없으므로 위의 코드가 작동하지 않습니다. 찾기 기능을 사용하면 테이블 요소의 하위에서 일치하는 항목을 검색합니다.
Ken Paul

답변:


522

이것은 작동해야합니다 :

$(document).ready(function() {
   $("someTableSelector").find("tr:gt(0)").remove();
});

2
first와 seconde를 제외한 테이블 행을 제거하려면 어떻게해야합니까?

18
@ user594166은 gt (0) 대신 gt (1)을 사용합니다.
christianvuerings

6
jQuery 웹 사이트에서 : Because :gt() is a jQuery extension and not part of the CSS specification, queries using :gt() cannot take advantage of the performance boost provided by the native DOM querySelectorAll() method. For better performance in modern browsers, use $("your-pure-css-selector").slice(index) instead. $ ( "# mytable> tr"). slice (1) .remove ();
Chris_F

귀하의 코드가 저에게 효과적이지 않았습니다. gt (0)을 gt (1)으로 변경했는데 이것이 효과가있었습니다.
saadk

113

나는 이것이 의도가 더 읽기 쉽다고 생각합니다.

$('someTableSelector').children( 'tr:not(:first)' ).remove();

자식을 사용하면 첫 번째 행에 검색 깊이를 제한하여 테이블이 포함 된 경우도 처리됩니다.

TBODY 요소가있는 경우 다음을 수행 할 수 있습니다.

$("someTableSelector > tbody:last").children().remove();

THEAD 또는 TFOOT 요소가있는 경우 다른 작업을 수행해야합니다.


2
다시 : 뭔가 다른 일을 .... 이것은 작동합니다 :$('someTableSelector > tbody:last > tr:not(:first)').remove();
Cheeso

모든 어린이를 제거하려면 큰 따옴표를 사용해야했습니다. 그렇지 않으면 인식하지 못했습니다. $("#tasks").children().remove();
Doomsknight

40

이를 수행하는 또 다른 방법은 테이블의 thead 및 tbody 요소와 함께 jQuery의 empty () 함수를 사용하는 것입니다.

테이블 예 :

<table id="tableId">
<thead>
    <tr><th>Col1</th><th>Col2</th></tr>
</thead>
<tbody>
    <tr><td>some</td><td>content</td></tr>
    <tr><td>to be</td><td>removed</td></tr>
</tbody>
</table>

그리고 jQuery 명령 :

$("#tableId > tbody").empty();

그러면 테이블의 tbody 요소에 포함 된 모든 행이 제거되고 thead 요소가 헤더의 위치에 유지됩니다. 테이블 내용 만 새로 고치려고 할 때 유용 할 수 있습니다.


3
이것은 아마도 제공된 모든 솔루션 중에서 최고의 성능을 발휘할 것이며 매우 우아합니다.
the.jxc

38

그것이 나라면 아마 단일 선택기로 끓일 것입니다.

$('someTableSelector tr:not(:first)').remove();

동의하지만 좀 더 구체적이어야합니다. $ ( 'someTableSelector tbody tr : not (: first)'). remove ();
Marco Muciño

30

선택기는 제거 내부에있을 필요가 없습니다.

다음과 같이 보일 것입니다 :

$("#tableID tr:gt(0)").remove();

즉, ID가 tableID 인 테이블에서 첫 번째를 제외한 모든 행을 선택하고 DOM에서 제거합니다.


나는 동의한다. 필자의 경우 테이블 객체가 이전에 선택되었습니다.
Ken Paul

첫 번째 행을 제외한 모든 행을 제거하려면 :-$ ( "# tableID tr : gt (1)"). remove ();
Biki

9
$('#table tr').slice(1).remove();

나는 그 '슬라이스'를 발견하는 것이 다른 모든 접근법보다 빠르다는 것을 기억합니다.


일부는 나를 위해 작동하지 않았습니다. 받아 들인 대답은 트릭을 수행하는 것 같습니다.
ankush981

gt더 이상 사용되지 않습니다. 이것이 가장 좋은 답변입니다.
CyberEd

7

id가있는 테이블을 고려하십시오 tbl: jQuery 코드는 다음과 같습니다.

$('#tbl tr:not(:first)').remove();

3

첫 번째 행을 제외한 모든 행을 제거하려면 (헤더 제외) 아래 코드를 사용하십시오.

$("#dataTable tr:gt(1)").remove();


1

가장 쉬운 방법 :

$("#mytable").find($("tr")).slice(1).remove()

먼저 테이블을 참조하십시오-
요소 목록을 가져 와서 슬라이스하고 목록에서 선택한 요소를 제거하십시오.


0

죄송합니다. 답변이 매우 늦습니다.

모든 행 (및 반복을 통해 다른 모든 행)을 삭제하는 가장 쉬운 방법은 다음과 같습니다.

$ ( '# rowid', '# tableid'). remove ();

나머지는 쉽습니다.



0

함수에 싸여 :

function remove_rows(tablename) { 
    $(tablename).find("tr:gt(0)").remove();        
}

그런 다음 호출하십시오.

remove_rows('#table1');
remove_rows('#table2');

0

이것은 완벽하게 작동합니다

$("#myTable tbody").children( 'tr:not(:first)' ).html("");

예, 이미 여러 번 게시되었습니다. 새로운 것이 있습니까?
Nico Haase 2018

0

이것은 내 경우에 다음과 같은 방식으로 작동했으며 정상적으로 작동했습니다.

$("#compositeTable").find("tr:gt(1)").remove();
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.