Answers:
$("#your-table-id").empty();
那样快就可以了。
$('#mytable tbody').empty();
。这样可以确保仅将胸腔清空。
最好避免任何形式的循环,只需像这样直接删除所有元素:
$("#mytable > tbody").html("");
html("")
empty()
内部通话
使用分离的速度比此处的其他任何答案都快:
$('#mytable').find('tbody').detach();
不要忘了将tbody元素放回表中,因为detach删除了它:
$('#mytable').append($('<tbody>'));
另请注意,说话时的效率$(target).find(child)
语法比快$(target > child)
。为什么? 嘶嘶声!
清空3,161表格行所用的时间
使用Detach()方法 (如上面的示例所示):
使用empty()方法:
我可以在这里看到两个问题:
jQuery的empty()和remove()方法实际上做了很多工作。有关原因,请参见John Resig的JavaScript函数调用分析。
另一件事是,对于大量表格数据,您可能会考虑使用数据网格库(例如出色的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);
}