jquery – 从一个非常大的表中删除所有行的最快方法
我认为这可能是一个很快的方法来删除一个非常大的表(3000行)的内容:
$jq("tbody", myTable).remove();
但它需要大约五秒钟完成在Firefox中。 我在做一些愚蠢的事情(除了试图加载3000行到浏览器)? 有没有更快的方法来做到这一点?
$("#your-table-id").empty();
这是一样快,你得到。
最好避免任何forms的循环,直接删除所有的元素,像这样:
$("#mytable > tbody").html("");
我可以在这里看到两个问题:
-
jQuery的empty()和remove()方法实际上做了很多工作。 请参阅John Resig的JavaScript函数调用分析以了解原因。
-
另一方面,对于大量的表格数据,您可能会考虑使用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); }