首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$('#foo').remove()可能出现的.remove内存问题?

$('#foo').remove()可能出现的.remove内存问题?
EN

Stack Overflow用户
提问于 2009-06-27 13:47:47
回答 3查看 689关注 0票数 7

我刚刚发现,当使用remove()函数时,匹配的元素不会从jQuery对象中删除,而只是从DOM中删除。

根据删除()文件

从DOM中删除所有匹配的元素。这不会从jQuery对象中删除它们,从而允许您进一步使用匹配的元素。

当然,如果一个web应用程序不断地从dom中添加和删除元素,这将消耗越来越多的内存?有人能确认一下是否是这样吗?怎样才能避免这种情况呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-27 14:10:20

我认为一旦它超出范围,它就会被垃圾收集(最终)。如果您在过多使用内存方面遇到问题,可以尝试在返回的对象上使用delete操作符。

票数 7
EN

Stack Overflow用户

发布于 2009-06-28 11:38:25

我做了一个小小的测试,试图找到我自己的问题的答案。

代码语言:javascript
复制
<script type="text/javascript">
$(document).ready(function() { 
    for ($i=1; $i<10000; $i++) {
        $('table').append("<tr id=\"test_" + $i + "\"><td>test " + $i + "</td></tr>");
        $('#test_'+($i-1)).remove();
    }
});
</script>
<table>
    <tr><td id="test_0">test 0</td></tr>
</table>

我使用以下方法对remove()进行了更改:

代码语言:javascript
复制
var test = $('#test_'+($i-1)).remove();

对于删除操作符 (感谢tvanfosson的建议):

代码语言:javascript
复制
var test = $('#test_'+($i-1)).remove();
delete test

在做了这些测试之后,我仍然会使用remove()。很难判断是否存在内存泄漏,因为在重新加载页面后,浏览器的内存使用量总是会增加。也许其他人能够通过对代码进行不同的测试来提供更确切的答案。

票数 2
EN

Stack Overflow用户

发布于 2009-06-27 14:01:13

内存泄漏的问题似乎已经提交给jQuery team thread/thread/4a99f6e9b2e33057/45ce657a48afd43a

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1052857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档