【发布时间】:2009-10-16 12:43:41
【问题描述】:
我想知道 dom 插入复杂元素的正确方法是什么。
直到现在,(使用 jQuery)我通常先构建我的元素并在完成后插入它。我认为这是最有效的,因为 DOM 访问在性能方面代价高昂。
但是对于原生 js,我读到为了避免内存泄漏,每个新的 dom 节点都应该在创建后立即插入到 dom 中。
我们的内网说:
Dom 插入顺序 注意 DOM 插入顺序:永远不要在根元素本身附加到 DOM 之前将子元素附加到根元素。
var root = document.createElement("DIV");
var child = document.createElement("DIV");
// THIS IS WRONG
root.appendChild(child);
document.body.appendChild(root);
// THIS IS CORRECT
document.body.appendChild(root);
root.appendChild(child);
我在网上找到了这个页面,它基本上解释了同样的事情(在跨页泄漏部分下): http://www.codeweblog.com/javascript-memory-leak-on-the-collation-of-draft-issues/
这是否意味着性能和防泄漏之间存在对立?
在插入之前是否应该创建新的 DOM 元素并将其作为字符串操作? js 库是如何解决这个问题的? DocumentFragments 是奇迹解决方案吗?
【问题讨论】:
标签: javascript jquery dom