ほとんどの場合、イベント ハンドラーが 1 つまたは 2 つしかない場合は、イベント ハンドラーを削除しません。しかし今、ajax を使用して HTML コンテンツを取得し、DOM に追加する Web ページを設計しています。
<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 オブジェクトは繰り返し挿入および削除されます。ajax呼び出しが成功した後、イベントハンドラーバインディングを実行しますpage1_initUI
。page2_initUI
この場合、これによりメモリリークや障害が発生するのではないかと心配しています。このシーンでどうすればよいか、誰かアドバイスしてもらえますか? ブラウザーはイベント ハンドラーを自動的にガベージ コレクションしますか?