답변:
$("#your-table-id").empty();
그것은 당신이 얻는 것만 큼 빠릅니다.
$('#mytable tbody').empty();. 이렇게하면 tbody 만 비워집니다.
모든 종류의 루프를 피하는 것이 좋습니다. 다음과 같이 모든 요소를 직접 제거하십시오.
$("#mytable > tbody").html("");
html("")empty()내부 전화
분리를 사용하면 여기에있는 다른 답변보다 훨씬 빠릅니다.
$('#mytable').find('tbody').detach();
detach가 제거되었으므로 tbody 요소를 테이블에 다시 넣는 것을 잊지 마십시오.
$('#mytable').append($('<tbody>'));
또한 효율성 $(target).find(child)구문을 말할 때 $(target > child). 왜? 타는 듯이 덥다!
3,161 개의 테이블 행을 비우는 데 경과 된 시간
Detach () 메서드 사용 (위의 예에서 볼 수 있음) :
empty () 메서드 사용 :
$("#myTable > tbody").empty();
헤더는 건드리지 않습니다.
여기서 볼 수있는 두 가지 문제 :
jQuery의 empty () 및 remove () 메소드는 실제로 상당한 작업을 수행합니다. 이유는 John Resig의 JavaScript 함수 호출 프로파일 링 을 참조하십시오 .
다른 한 가지는 많은 양의 테이블 형식 데이터의 경우 우수한 DataTables 와 같은 데이터 그리드 라이브러리 를 사용하여 서버에서 데이터를 즉시로드하여 네트워크 호출 수를 늘리지 만 해당 호출의 크기를 줄일 수 있다는 것입니다. 나는 1500 개의 행이있는 매우 복잡한 테이블을 가지고있어서 상당히 느려서 새로운 AJAX 기반 테이블로 변경하면 동일한 데이터가 다소 빨라 보입니다.
빨리 제거하고 싶다면 .. 아래와 같이 할 수 있습니다 ..
$( "#tableId tbody tr" ).each( function(){
this.parentNode.removeChild( this );
});
그러나 테이블에 이벤트 바인딩 요소가있을 수 있습니다.
이 경우
위의 코드는 IE에서 메모리 누수를 방지하지 않습니다 ... TT 및 FF에서 빠르지 않습니다 ...
죄송합니다....