又是纠缠了好久的问题。
用$(document).on('click','#XX',function(){...})为元素添加点击事件 结果导致事件会执行多次 比如alert会弹出N次,据说是因为每点击一下Document就会绑定一遍事件,所以导致触发多次
该是你程序造成多次绑定了。你在这个事件绑定的前面紧挨着加上。$(document).off('click','#XX')试试
$('#sub').unbind('click').click(function () {
...
});
每次绑定前先取消上次的绑定。
我也遇到这样的问题,因为每次让弹窗展示出来都会帮顶一次事件,这样累计下来事件会多次执行。
1.一种方法是弹窗隐藏的时候把弹窗销毁掉;
2.一种是把弹窗里面的事件绑定抽离出来,不要让弹窗每次显示的时候都执行click的绑定。
当然楼主的解决方案也不错。
https://segmentfault.com/q/1010000000458010
jquery中用on来绑定事件,经常的写法有
$(document).on('click','.classname',function(){});
$('.classname').on('click',function(){});
$(document).on是把事件委托到了document上
$('#idname').on是把事件委托到了元素上面(绑定到idName上)