- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我应该将每个 data() 调用与以后的 removeData() 调用配对吗?
我的假设:jQuery 的 remove() 将从 DOM 中删除元素,如果我没有任何其他要删除的引用,我不必再做任何清理工作。
但是,如果我有一些 javascript var 或对象引用了被删除的元素之一,我需要清理它,并且我假设 这也适用于 jQuery 的数据函数, 因为它以某种方式引用元素。
因此,如果我确实需要在删除之前调用 removeData,是否有删除与元素关联的所有数据的快捷方式,还是我必须通过名称显式调用每个数据?
编辑:我查看了源代码并确认了 Borgar 和 roosteronacid 所说的话。 Remove 将元素从 dom 中取出并删除与它们一起存储的任何事件和数据——这很方便,但让我想知道何时使用 removeData()。可能不会经常。
最佳答案
jQuery 的数据不会保留对元素的引用,因此你不必担心内存泄漏。它的预期目的是解决这个确切的问题。
稍微简化一下它的工作原理:
一个 id 成员被添加到每个“接触”的 DOM 节点。涉及该 DOM 元素的所有后续操作都使用该 id。
var theNode = document.getElementById('examplenode');
theNode[ 'jQuery' + timestamp ] = someInternalNodeID;
您可以使用 jQuery 使用的相同函数访问 id:
someInternalID = jQuery.data( document.body );
当您将数据附加到节点时,它会将数据存储在 jQuery 对象中,归档在节点的内部 id 下。您的 $(element).data(key,value)
在内部转换为:
jQuery.cache[ someInternalNodeID ][ theKey ] = theValue;
一切都进入同一个结构,包括事件处理程序:
jQuery.cache[ someInternalNodeID ][ 'events' ][ 'click' ] = theHandler;
当一个元素被移除时,jQuery 可以通过一个简单的操作丢弃所有数据(和事件处理程序):
delete jQuery.cache[ someInternalNodeID ];
理论上,您也可以因此删除 jQuery 而不会从任何引用中发生泄漏。 jQuery 甚至支持该库的多个独立实例,每个实例都拥有自己的一组数据或事件。
您可以在 the "The DOM Is a Mess" presentation 中看到 John Resig 解释这些内容。 .
关于javascript - 使用 jQuery 的 data() 应该注意什么样的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1056098/
我正在运行PHP脚本,并继续收到如下错误: 注意:未定义的变量:第10行的C:\ wamp \ www \ mypath \ index.php中的my_variable_name 注意
我正在运行PHP脚本,并继续收到如下错误: 注意:未定义的变量:第10行的C:\ wamp \ www \ mypath \ index.php中的my_variable_name 注意
我正在运行PHP脚本,并继续收到如下错误: 注意:未定义的变量:第10行的C:\ wamp \ www \ mypath \ index.php中的my_variable_name 注意
我正在运行一个PHP脚本,并且继续收到如下错误:。第10行和第11行如下所示:。这些错误消息的含义是什么?。为什么他们突然出现了?我多年来一直使用这个脚本,从来没有遇到过任何问题。。我该怎么修理它们呢
当我在 flutter clean 之后运行 flutter run 或 debug my code 时显示此错误 Note: C:\src\flutter.pub-cache\hosted\pub.
My Goal: To fix this error and be able to run my app without an error. Error Message: Note:D:\Learni
前言:今天在解决一个问题时,程序总是不能输出正确值,分析逻辑思路没问题后,发现原来是由于函数传递导致了这个情况。 LeetCode 113 问题:给你二叉树的根节点
我正在 R 中开发一个包,当我运行时 devtools::check()我收到以下说明。 checking DESCRIPTION meta-information ... NOTE Malforme
获得通知和警告波纹管 Notice: Use of undefined constant GLOB_BRACE - assumed 'GLOB_BRACE' in /var/www/html/open
我正在准备一个 R 包以提交给 CRAN。 R CMD 检查给了我以下注意: Foreign function calls to a different package: .Fortran("cinc
我正在尝试从以下位置获取数据: http://api.convoytrucking.net/api.php?api_key=public&show=player&player_name=Mick_Gi
我有这段代码,但我不明白为什么我仍然有这个错误,我已经尝试了所有解决方案,但无法解决这个问题:-注意:未定义索引:product_price-注意:未定义索引:product_quantity-注意:
This question already has answers here: “Notice: Undefined variable”, “Notice: Undefined index”, and
我正在尝试从以下位置获取数据: http://api.convoytrucking.net/api.php?api_key=public&show=player&player_name=Mick_Gi
切记,在PHP 7中不要做的10件事 1. 不要使用 mysql_ 函数 这一天终于来了,从此你不仅仅“不应该”使用mysql_函数。PHP 7 已经把它们从核心中全部移除了,也就是说你需要迁移
前几天安装了dedecms系统,当在后台安全退出的时候,后台出现空白,先前只分析其他功能去了,也没太注意安全,看了一下安全退出的代码,是这样写的: 复制代码 代码如下: function ex
我使用此代码来检查变量$n0、$n1、$n2是否未定义。 但每次未定义时我都会收到通知。我的代码是一种不好的做法吗?还有什么替代方案吗?或者只是删除通知,代码就可以了? if
编写代码时处理所有警告是否重要?在我公司中具有较高资历的开发人员坚持认为警告是无害的。诚然,其中一些是: Warning: Division by zero Notice: Undefined ind
我有一个搜索查询,执行搜索查询后,我将$ result放入数组中。 我的PHP代码- $contents = $client->search($params); // executing the se
This question already has answers here: “Notice: Undefined variable”, “Notice: Undefined index”, and
我是一名优秀的程序员,十分优秀!