javascript - jquery clone() 内部是否使用 documentfragment ?

标签 javascript jquery documentfragment

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

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

基本上我想以某种方式克隆父 div,以便它可以作为 documentfragment,这样在 dom 上就不会发生附加操作并获得性能。

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

最佳答案

jQuery clone() 执行普通 DOM cloneNode(),但在 IE 上除外,如果您这样做,它会不适本地复制事件监听器。为了解决这个问题,jQuery 在 IE 上做了一些你不想知道的极其可怕的事情。这可不快。

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

我真的不明白克隆到底是什么让你来到这里的。只需直接对 child 进行操作即可。如果您有很多操作要做,并且触发了重新布局,导致速度变慢,您可以暂时隐藏父级或将其从文档中分离出来,然后在需要时重新附加它。完成了。

关于javascript - jquery clone() 内部是否使用 documentfragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3895421/

相关文章:

javascript - Codewars Kata 上的递归问题 - Snail Trail

javascript - 如何使用 for 循环来控制台记录数组的每个项目?

javascript - PHP生成html文本框计算amt=qty*价格

javascript - 文档片段如何工作?

javascript - Angular ui中不调用 Controller

javascript - 如何在 .load() 中包含 .ready() 函数

javascript - 拆分和编辑表单提交的时间线

jquery - Android 浏览器因 Google Site Search 而崩溃

javascript - AngularJS:如何将 ng-click 绑定(bind)到使用嵌入或对象元素插入的 SVG 图像

javascript - 保留对附加节点 javascript 的引用