0

我正在动态地将元素插入到 dom 中,为此我使用以下步骤:(jquery)初始 dom 结构如下:

<div parent div>
 </div>
 <div child div template>
</div>
  • 使用 jquery .clone() 克隆父 div
  • 克隆子 div 并进行操作
  • 附加到克隆的父级
  • 对所有子数据执行此操作
  • (parentdiv original).replaceAll(clonedparent)

基本上我想以某种方式克隆父 div,以便它可以作为文档片段使用,并且不会在 dom 上发生附加并获得性能。

jQueryclone()会通过表现得像 documentfragment 来提供性能优势吗?还是有更好的方法来做到这一点?我不想将每个子元素构造为 HTML 字符串,因为它们的结构非常复杂。

4

1 回答 1

2

jQueryclone()做一个普通的 DOM cloneNode(),除了在 IE 上,如果你这样做,它会不恰当地复制事件侦听器。为了解决这个问题,在 IE 上,jQuery 做了一些你不想知道的完全可怕的事情。这不快。

replaceAll()也不快。它必须从 DOM 中删除每个子节点(这在 jQuery 中特别慢,因为它需要在data从 DOM 中删除某些内容时进行检查)并一个接一个地添加新节点。

我真的不明白克隆是什么让你真正来到这里。直接对孩子进行操作即可。如果您有很多操作要做并且您正在触发使其变慢的重新布局,您可以暂时将父级或detach它从文档中隐藏起来,并在完成后重新附加它。

于 2010-10-09T03:36:55.880 回答