javascript - 使用 jQuery/.data() 避免内存泄漏

标签 javascript jquery dom

我正在使用 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/

相关文章:

javascript - 响应桌面和移动设备中的 touchstart 和 mousedown,无需嗅探

php - jQuery IF 语句不起作用

javascript - 标签难以点击

jquery - 基于树的导航,仅切换单击的元素 Jquery

javascript - jquery 拖动时触发的事件

javascript - 使用 elementFromPoint() 方法检查元素可见性

JavaScript 引起的样式更改不是永久性的

javascript - 如何单独捆绑 vendor 脚本并根据需要使用 Webpack?

javascript - 字符串的正则表达式以 X 开头并包含 Y

Javascript,具有设置生命周期的对象?