$(‘#health_advice_btn_send’).bind(‘click’, function() {…$.comfirmModal(“提示”, “aaa”, true); $(“#sure”).bind(‘click’, function() { … setTimeout(function() { $.ajax({ url: ’url’, data: postData, type: ”POST”, dataType: ”JSON”, async: false, success: function(data) {… }, error: function(err) {… } }); }, 1000); }); });
可以看出来原来的代码是没有任何问题的,但是在查找问题的时候发现,点击提交(并不是sure)在点击确认框取消这个过程会让click在时间上有一个积累,也就是说你点击一次发送就触发一次click事件,就是你点击取消几次就会提交几次。这里很奇怪,明明没有触发#sure绑定的click事件怎么会提交几次。这就是click事件在时间上的积累造成的。
解决方法:将$("#sure").bind('click',function ()
这句代码修改为 $("#sure").unbind('click').bind('click',function ()
关于unbind
unbind() 方法移除被选元素的事件处理程序。
该方法能够移除所有的或被选的事件处理程序,或者当事件发生时终止指定函数的运行。
ubind() 适用于任何通过 jQuery 附加的事件处理程序。