在我的 webapp 中,我根据服务器发送的页面片段创建了一些 DOM 元素。任何新片段都是在 jsp 页面中生成的具有唯一 ID 的 div。
我认为使用也作为页面片段的一部分发送的脚本标记在此 div 中的元素上注册事件。
这就是我的页面片段的样子。
<script>
$(document).ready(function() {
var myButton = $("#<unique_tab_id").find(".myButton);
myButton.click(clickFunction);
function clickFunction() {
}
});
</script>
<div id="<unique_tab_id">
<button class="myButton">
My Button
</button>
</div>
随着时间的推移,页面中会添加和删除几个 div。删除是基于一些仅调用 jquery replaceWith 或删除函数的用户操作发生的。
添加了新元素。假设 jquery 会自动注销它们,我不会对事件做任何事情。
我的假设正确吗?这种编码风格可能存在内存泄漏吗?我看到我的页面在一段时间后变慢了。这是由于内存使用量增加所致。我在这里泄漏内存吗?
$(document).ready() 中定义的函数涉及闭包。但我假设一旦相应的 div 被删除,它们将不再处于活动状态。那正确吗?还有什么可能在这里泄漏内存。
如果您想查看更多详细信息,请查看代码: https ://github.com/C4G/V2V/blob/f4dd780ff5bf1d3b1d456d421602038500769fd9/war/WEB-INF/jsp/donors/addDonorForm.jsp