Javascript:事件多次触发的原因
2015-08-13 本文已影响262人
冰星寒水
图一
点击标记处点击会出现弹出层 图二
图二
今天遇到了一个非常奇怪的现象,就是在用 `<s:iterator></s:iterator>`中构造的表格中给每一行绑定相同的事件(有AJAX请求),单独操作没有问题,但是操作多个时会出现问题,修改的数据会非常奇怪,改的位置不是自己期望的数据。
原因:
点击后出现的弹出层中的确定事件是用`live`绑定的。于是第一次触发只提交第一次的数据此时结果正确,由于每次保存成功后都会刷新页面,所以正常单次操作是不会产生问题的,如果快速操作后第二次又会给保存按钮绑定事件,这时就会在保存时触发两次事件,第一次是上一次绑定的,并且保存了上一次的ID,所以会也会修改上次的数据,产生我遇到的这种情况。
解决办法:
抛弃live方法,改用on或者bind但是官方推荐使用on,这些我就不一一赘述了,毕竟网上这些资料太多了随便查看一些on、live、bind的区别看看就好。