Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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
Javascript $(';#foo';)可能存在jQuery内存问题。是否删除()?_Javascript_Jquery_Dom - Fatal编程技术网

Javascript $(';#foo';)可能存在jQuery内存问题。是否删除()?

Javascript $(';#foo';)可能存在jQuery内存问题。是否删除()?,javascript,jquery,dom,Javascript,Jquery,Dom,我刚刚发现,当使用remove()函数时,匹配的元素不会从jQuery对象中删除,而是从DOM中删除 根据报告: 从列表中删除所有匹配的元素 多姆。这不会将它们从中删除 jQuery对象,允许您使用 元素进一步匹配 当然,如果一个web应用程序不断地从dom中添加和删除元素,这会占用越来越多的内存吗?有人能证实这是不是真的吗?如何避免这种情况?内存泄漏的问题似乎已经提交给jQuery团队了我认为一旦它超出范围,就会被垃圾收集(最终)。如果内存使用过多,您可能会尝试在返回的对象上使用delete操

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

根据报告:

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


当然,如果一个web应用程序不断地从dom中添加和删除元素,这会占用越来越多的内存吗?有人能证实这是不是真的吗?如何避免这种情况?

内存泄漏的问题似乎已经提交给jQuery团队了

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

我已经尝试通过做一个小测试来找到我自己问题的答案

<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>
还有(感谢tvanfosson的建议):


完成这些测试后,我仍然只使用remove()。很难判断是否存在内存泄漏,因为在重新加载页面后,浏览器的内存使用总是增加。也许其他人可以通过对代码进行不同的测试来提供更具决定性的答案。

我不认为泄漏讨论(尽管很有趣)与andyuk所说的是同一件事。是的。DOM已更改,但jQuery对象未更改。如果您将jQuery对象分配给一个变量,那么当该变量超出范围时,垃圾收集器应该对该变量进行一次尝试。
var test = $('#test_'+($i-1)).remove();
var test = $('#test_'+($i-1)).remove();
delete test