在IE中从DOM中删除子元素的最快方法是什么?

blu*_*moo 10 jquery

我正在使用jQuery,并有一个包含几百行的表元素.我想删除所有行,然后添加一组新行.我这样做是通过调用remove然后追加父元素.

我的追加逻辑相当快,并遵循这里给出的建议:http://www.learningjquery.com/2009/03/43439-reasons-to-use-append-correctly

但是,删除单次调用所需的时间是追加的5倍.清除dom元素子元素的最快方法是什么?

编辑:这是我使用的代码的精简版本:

var table = $('#mytable');
$('tbody', table).remove();
table.append(tBodyContents.join(''));
Run Code Online (Sandbox Code Playgroud)

tBodyContents是一个字符串数组,组合后将形成tbody中行的html.

Ale*_*ini 7

我经常这样做

$('#myTableToEmpty').html('');
Run Code Online (Sandbox Code Playgroud)

然后在需要的地方重新添加行.

  • 此方法是否也清除了绑定事件和jQuery数据?这是(根据文档)remove()函数的一件事.编辑:来自文档 - *除了元素本身之外,还删除了与元素关联的所有绑定事件和jQuery数据.* (3认同)

mar*_*ket 6

function emptyElement(element){
  var i = element.childNodes.length;
  while(i--){
    element.removeChild(element.lastChild);
  }
}
Run Code Online (Sandbox Code Playgroud)

这个实际上比innerHTML技巧更快,可以更快,取决于您的浏览器.使用类似的函数对jsperf进行了一些测试,可以为你提供一些基准测试......