Js解决解除多次Ajax请求的事件

    $(‘#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 附加的事件处理程序。

原文地址:https://www.cnblogs.com/zhengweizhao/p/8491820.html