大多数时候,当只有一两个事件处理程序时,我不会删除它们。但是现在我正在设计一个网页,它将使用 ajax 来获取 HTML 内容以附加到 DOM 中。
<body>
<ul class="menu">
<li><span id="mainMenuAcc">profile</span></li>
<li><span id="mainMenuTop">contact</span></li>
</ul>
sdfgsegg <br/>
<div id="container">
</div>
</body>
$.ajax({
url:url,
beforeSend: function(){
showSpinner(true);
},
success: function(result){
container.html(result);
if (page1){
page1_initUI();
} else if (page2){
page2_initUI();
}
},
error: function(obj, errMsj){
alert("Ajax connection fail. " + errMsj);
},
complete: function(){
showSpinner(false);
}
});
如您所见,用户可以点击不同的列表项来切换页面,因此 DOM 对象将被重复插入和删除。page1_initUI
并page2_initUI
在 ajax 调用成功后运行事件处理程序绑定。
我担心在这种情况下这会导致一些内存泄漏或缺陷。谁能告诉我在这个场景中我应该怎么做?我们的浏览器会自动垃圾收集事件处理程序吗?