儿童最安全、最有效的元素去除
Safest, Most Performant Removal of Element with Children
假设以下标记:
<div id="outterParent">
<div id="innerParent">
<div class="children"></div>
<div class="children"></div>
<div class="children"></div>
</div>
</div>
就安全性(避免内存泄漏)和性能而言,可以这样做吗:
var outterParent = document.getElementById("outterParent");
var innerParent = document.getElementById("innerParent");
outterParent.removeChild(innerParent);
outterParent = innerParent = null;
还是最好在移除#innerParent
之前移除每个.children
元素,如下所示:
var outterParent = document.getElementById("outterParent");
var innerParent = document.getElementById("innerParent");
var child;
while (innerParent.firstChild){
child = innerParent.firstChild;
innerParent.removeChild(child);
}
outterParent.removeChild(innerParent);
outterParent = innerParent = child = null;
这取决于情况。如果您在某个地方引用了一个子级,但没有将其删除,则不能对该父级进行垃圾收集。
var child = document.querySelector('children');
document.getElementById("innerParent").remove();
child.parentNode; // #innerParent -> it can't be garbage collected
因此,最好取消子引用,或者删除子引用:
var child = document.querySelector('children');
document.getElementById("innerParent").remove();
child.remove();
child.parentNode; // null -> #innerParent might be garbage collected
相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何设置html元素填充的动画
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 表追加而不附加最后一个元素
- 如何在jQuery中获取元素的形式
- 我可以获得相对于被点击元素的确切点击位置吗
- 在函数中添加数组元素的数值
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 儿童最安全、最有效的元素去除
- 什么时候是“;“安全”;以在解析文档时修改给定的html元素/节点
- 使用for.of迭代时删除集合中的元素是否安全
- 检查数组元素是否存在的安全方法
- 安全如何冻结DOM元素它'那有可能吗?[成绩作弊]
- 用jQuery追加新元素的安全方法是什么?
- 安全问题,当json元素包含html
- 当图像在同一域中时,画布元素不呈现为PNG(安全错误)
- 如何以安全可靠的方式抓取HTML元素的文本