我动态地将元素插入到dom中,并使用以下步骤:(jquery)初始dom结构如下:
<div parent div>
</div>
<div child div template>
</div>
(parentdiv original).replaceAll(clonedparent)
基本上我想以某种方式克隆父div,以便它可以作为a 文档片段,以便在dom上获得追加并获得性能。
jQuery clone()
会像documentfragment一样表现出性能优势吗?
或者有更好的方法吗?我不想将每个子元素构造为HTML字符串,因为它们的结构非常复杂。
答案 0 :(得分:2)
jQuery clone()
执行一个简单的DOM cloneNode()
,除了在IE上,如果你这样做,它会不恰当地复制事件监听器。为了解决这个问题,在IE浏览器上,jQuery做了一件非常可怕的事情,你真的不想知道。哪个不快。
replaceAll()
也不快。它必须从DOM中删除每个子节点(这在jQuery中特别慢,因为它需要在从DOM中删除某些内容时检查data
)并逐个添加新节点。
我真的没有看到克隆给你带来什么。只需直接对孩子进行操作即可。如果你有很多操作要做,并且你正在触发使它变慢的重新布局,你可以暂时隐藏父文件或detach
文件,在你完成后重新附加它。 / p>