当我将事件处理程序绑定到 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引擎会冒内存不足的风险吗?