回答:
$("#your-table-id").empty();
それはあなたが得るのと同じくらい速いです。
$('#mytable tbody').empty();
。これにより、tbodyのみが確実に空になります。
ループを回避することをお勧めします。次のようにすべての要素を直接削除します。
$("#mytable > tbody").html("");
html("")
empty()
社内通話
detachの使用は、ここでの他のどの回答よりもはるかに高速です。
$('#mytable').find('tbody').detach();
detachが削除したので、tbody要素をテーブルに戻すことを忘れないでください:
$('#mytable').append($('<tbody>'));
また、効率的な$(target).find(child)
構文を話すときは、構文よりも速いことに注意してください$(target > child)
。どうして? シズル!
3,161テーブル行を空にするまでの経過時間
Detach()メソッドの使用( 上記の例で示したとおり):
empty()メソッドの使用:
$("#myTable > tbody").empty();
ヘッダーには触れません。
ここで確認できる2つの問題:
jQueryのempty()およびremove()メソッドは、実際にはかなりの作業を行います。その理由については、John ResigのJavaScript関数呼び出しプロファイリングを参照してください。
もう1つは、大量の表形式のデータの場合、サーバーからオンザフライでデータを読み込むための優れたDataTablesなどのデータグリッドライブラリを検討し、ネットワーク呼び出しの数を増やしながら、それらの呼び出しのサイズを減らすことです。非常に遅くなった1500行の非常に複雑なテーブルがありました。新しいAJAXベースのテーブルに変更すると、同じデータがかなり高速に見えます。
高速で削除したい場合は、以下のようにできます。
$( "#tableId tbody tr" ).each( function(){
this.parentNode.removeChild( this );
});
しかし、テーブルにはイベントバインドされた要素がいくつかあります。
その場合、
上記のコードはIEでメモリリークを防止していません... TTとFFでは高速ではありません...
ごめんなさい....
あなたはこれを試すことができます...
var myTable= document.getElementById("myTable");
if(myTable== null)
return;
var oTBody = myTable.getElementsByTagName("TBODY")[0];
if(oTBody== null)
return;
try
{
oTBody.innerHTML = "";
}
catch(e)
{
for(var i=0, j=myTable.rows.length; i<j; i++)
myTable.deleteRow(0);
}