我正在使用 jQuery 动态创建 HTML 元素,现在需要针对它们存储 JavaScript 数据。但是,我现在担心内存泄漏,因为我实际上从未对我的对象调用“删除”。我 '.append' 和 '.detach' 它们,但从不 '.remove'。 jQuery 的文档似乎建议我应该调用 remove 来清理它在对象上的足迹——事件、数据等。
这在现代浏览器上是否绝对必要,或者对元素的任何引用的消失是否会为我做到这一点?
表达我的问题的另一种方式;这个脚本片段会泄漏内存吗?
function createElement()
{
var newDiv = $("<div>")
.data("test", "test data")
.appendTo(document.body)
.detach();
setTimeout(createElement, 10);
}
createElement();
就此而言,即使 没有 .data() 调用,这种内存泄漏也会吗?
我对支持非常旧的浏览器不感兴趣。基本上是 IE9 和更好的版本。
最佳答案
来自 http://api.jquery.com/jQuery.data/ :“jQuery.data() 方法允许我们以一种安全的方式将任何类型的数据附加到 DOM 元素,避免循环引用,从而避免内存泄漏。我们可以一次为一个元素检索多个不同的值,或者作为一个集合。”
另外,不要忘记您可以使用 HTML5 data-* 属性来存储数据。
关于javascript - 使用 jQuery/.data() 避免内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20010753/