如何重置Ajax成功函数?

时间:2017-04-24 10:47:28

标签: jquery ajax

   $(document).on("click", ".example", function (event) {
        alert("test");
        var id = 1;
        $.ajax({
            url: "update.php",
            data: {
                id: id,
            },
            type: "POST",
            success: function (data) {
                $("#result").html(data); 
            }
        }) 
    });

如果我删除此行...

 success: function (data) {
   $("#result").html(data); 
 }

......然后"测试"每次点击只会被提醒一次。

但每次点击我的.example按钮时都会使用此行," test"在更多时间被提醒。

所以这意味着:

  • 首先点击 - >警告"测试"
  • 第二次点击 - >警告"测试",警告"测试"
  • 第三次点击--->警报"测试,提醒"测试",提醒"测试"

......等等。

我认为这是因为.example按钮也是由Ajax创建的。

那么有可能以某种方式重置成功功能吗?

3 个答案:

答案 0 :(得分:2)

Remove/Unbind旧的监听器并添加新的:

$(document).on("click", ".example", function (event) {

将其更改为:

$(document).off("click", ".example").on("click", ".example", function (event) {

再试一次。

说明:问题是您的脚本会在每次成功的callacks上一次又一次地初始化。因此$(documeon("click", ".example", function (event) {nt).off("click", ".example")将解除所有侦听器的绑定,并on("click", ".example", function (event) {添加新的侦听器。

答案 1 :(得分:2)

这应该有帮助

   $(document).unbind("click").on("click", ".example", function (event) {
          //your code
    });

取消绑定,使其仅附加一次

  

来自api.jQuery .bind()附带的事件处理程序可以   用.unbind()删除。在最简单的情况下,没有参数,   .unbind()删除附加到元素的所有处理程序:

正如 charlietfl 的评论中所建议的那样,off使用unbind已被弃用。

答案 2 :(得分:2)

因为您的脚本会在每次成功的callacks上一次又一次地初始化,所以在使用off()之前只有on()事件,

$(document).off("click", ".example").on("click", ".example", function (event) {
    alert("test");
    var id = 1;
    $.ajax({
        url: "update.php",
        data: {
            id: id,
        },
        type: "POST",
        success: function (data) {
            $("#result").html(data); 
        }
    }) 
});