jquery – 从一个非常大的表中删除所有行的最快方法

我认为这可能是一个很快的方法来删除一个非常大的表(3000行)的内容:

$jq("tbody", myTable).remove(); 

但它需要大约五秒钟完成在Firefox中。 我在做一些愚蠢的事情(除了试图加载3000行到浏览器)? 有没有更快的方法来做到这一点?

 $("#your-table-id").empty(); 

这是一样快,你得到。

最好避免任何forms的循环,直接删除所有的元素,像这样:

 $("#mytable > tbody").html(""); 

我可以在这里看到两个问题:

  1. jQuery的empty()和remove()方法实际上做了很多工作。 请参阅John Resig的JavaScript函数调用分析以了解原因。

  2. 另一方面,对于大量的表格数据,您可能会考虑使用DataGrid库(例如优秀的DataTables)从服务器上即时加载数据,从而增加networking调用的数量,但会减less这些调用的大小。 我有一个非常复杂的表,1500行非常慢,改用新的基于AJAX的表,使相同的数据看起来相当快。

如果你想快速删除..你可以像下面这样做..

 $( "#tableId tbody tr" ).each( function(){ this.parentNode.removeChild( this ); }); 

但是,表中可以有一些事件绑定的元素,

在这种情况下,

上面的代码是不是防止IE中的内存泄漏… TT和不快速的FF …

抱歉….

这对我有用:

1-为每行添加类“removeRow”

2-在jQuery中

 $(".removeRow").remove(); 

你可以试试这个…

 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); }