イベント ハンドラーを DOM 要素にバインドし、その後 DOM 要素を破棄するとどうなりますか? イベント ハンドラーのバインドを解除するプロセスを実行する必要がありますか?
<div id="el1">
<span id="c">Click Me!</span>
</div>
<span id="note">Note...</span>
<script>
var i=0;
$("#c").click(function(){
i++;
$("#note").html("'Click Me!' was clicked.");
$("#el1").html("<span id=\"c\">Click Me! ("+i+" time)</span>");
});
</script>
実際: http://jsfiddle.net/lordloh/FyLdM/
明らかに、イベント ハンドラーは同じ ID を持つ新しい DOM オブジェクトにバインドしません。私が使用している回避策は
<div id="el1">
<span id="c">Click Me!</span>
</div>
<span id="note">Note...</span>
<script>
var i=0;
$("#c").click(clickHandler);
function clickHandler(){
i++;
$("#note").html("'Click Me!' was clicked.");
$("#el1").html("<span id=\"c\">Click Me! ("+i+" time)</span>");
$("#c").click(clickHandler);
}
</script>
実際: http://jsfiddle.net/lordloh/FyLdM/1/
私が懸念しているのは、これが悪い習慣なのか、それとも受け入れられるのかということです。このシーケンスが何百万回も繰り返されるとどうなりますか? JavaScript エンジンがメモリ不足のリスクを冒す可能性はありますか?