Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
内存管理:删除jquery对象(插件)的容器_Jquery_Memory_Jquery Plugins_Plugins_Memory Leaks - Fatal编程技术网

内存管理:删除jquery对象(插件)的容器

内存管理:删除jquery对象(插件)的容器,jquery,memory,jquery-plugins,plugins,memory-leaks,Jquery,Memory,Jquery Plugins,Plugins,Memory Leaks,我只是想确认一下我在我的应用程序中做了什么 我创建了一些jquery插件,它们在我页面的DOM中添加了一些元素和事件 例如,我在页面的DOM元素中初始化插件: $("#myplugin_container").myplugin('init', {'data':mydata}); 我想知道的是:如果我使用remove函数删除容器 $("#myplugin_container").remove(); ,插件上是否存在内存泄漏,或者jquery对象是否已正确删除 我希望我的解释清楚 谢谢 jQue

我只是想确认一下我在我的应用程序中做了什么

我创建了一些jquery插件,它们在我页面的DOM中添加了一些元素和事件

例如,我在页面的DOM元素中初始化插件:

$("#myplugin_container").myplugin('init', {'data':mydata});
我想知道的是:如果我使用remove函数删除容器

$("#myplugin_container").remove();
,插件上是否存在内存泄漏,或者jquery对象是否已正确删除

我希望我的解释清楚


谢谢

jQuery将在使用.remove()时删除所有事件处理程序和与元素关联的其他数据,因此不应存在任何内存泄漏

从中删除():

与.empty()类似,.remove()方法从DOM中取出元素。如果要删除元素本身以及其中的所有内容,请使用.remove()。除了元素本身之外,与元素关联的所有绑定事件和jQuery数据都将被删除。要在不删除数据和事件的情况下删除元素,请改用.detach()


... 这取决于插件中的代码(例如,放置元素的范围和提供给它的数据)。如果将该元素的所有设置和数据存储在本地(例如通过
.data()
),则很有可能没有泄漏。但是,如果出于任何原因(例如,在持久数组中)将元素和数据存储在另一个作用域中,那么即使调用了
.remove()
,对它的引用也会被保留,因此内存将“泄漏”(用JavaScript术语)。在我的插件中,我将数据存储在数组中。因此,关于失去对该数组的引用,您肯定是对的。我将使用.data()。谢谢