在编写一个html页面时,有大量的元素使用同一个类,给这些具备同类的元素定义了事件,如下所示:
<script>
$('.txtClassBox').change(function (e) {
alert("in");
}
</script>
当同类的元素内容发生改变的时候,就会触发上述的事件,但是改变内容的该元素出现后面有几个这个同类元素,那么上述的事件就会自动触发N+1次,这个1次就是当前触发change的元素,N是后面的同类元素的个数。调试过程中有点无语,明明只有一个发生改变,为什么会出现这样的事情?
经过一番挣扎,发现上述的方法编写有些问题,问题的关键是同一个元素被多次定义了这个事件引起的,解决这个问题的关键就是unbind
规定从指定元素上删除的一个或多个事件处理程序。如果没有规定参数,unbind() 方法会删除指定元素的所有事件处理程序。
$(selector).unbind(event,function)
因此,将上述的方法改为:
$('.txtClassBox').unbind().change(function (e) {
alert("in");
}
就可以解决弹出多次,或者说事件触发多次的问题。