我的布局(简化)如下:
<div class="row">
<div class="row_section">
<div class="row_section">
...
</div>
<div class="row">
<div class="row_section">
...
</div>
...
我希望找到一种在特定时间间隔内(例如从0到59)清空所有具有class="row"的div的最快方法。
到目前为止,我尝试了很多选项:
$j('div.row').slice(nr_i, nr_s).empty();
令人惊讶的是,这需要比预期更长的时间。
for(i = nr_i; i < nr_s; i++) {
$j('div.row:eq('+i+')').empty();
}
在一个只有选定范围内存在.row_section div的示例中,
$j('div.row_section').remove();
虽然它是最快的,但仍然不够快。清空60行的部分需要的时间是创建一个新部分的两倍,实际上几乎是三倍。
考虑到创建行涉及比添加一堆部分更多的计算(部分中还有其他东西,并且每行有很多部分),我认为创建行需要更长的时间。
完成原始任务的最快方法是什么,为什么使用最快的解决方案清空所需的时间比创建新的部分要长这么多?
我还想补充一点,行元素可以达到数千个,但非空行从未超过60-80行,每行的行部分可达到数百个。是的,我知道在Web应用程序中这样做是不切实际的,但不得不这样做。
.data()
项与被删除的对象和jQuery事件处理程序相关。jQuery的问题在于它有很多清理工作要做,以清除所有额外的数据结构,而一个简单的.removeChild()
可以非常快速地完成。 - jfriend00