2017-04-24 82 views
0
$(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); 
      } 
     }) 
    }); 

如果我删除此行...如何重置Ajax成功函数?

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

...那么 “测试” 被提醒的每次点击一次。

但是,每当我点击我的.example按钮时,此线路会在更多时间提醒“测试”。

因此,这意味着:

  • 首先点击 - >警报 “测试”
  • 第二次点击 - >警报 “测试”,警惕 “测试”
  • 第三次点击 - >警报“测试,警惕‘测试’,警惕‘测试’

...等等。

我认为这是造成的,因为在.example按钮也是之前由Ajax创建的。

那么是否有可能重置某种成功功能?

回答

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); 
     } 
    }) 
}); 
+0

是的,这是工作!大! – Jarla

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) {添加新的。

2

这应该有助于

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

解除绑定以便它能够连接只有一次

从连接用.bind(api.jQuery事件处理程序)可以用 .unbind()中删除。在最简单的情况下,不带参数, .unbind()除去附着于元件的所有处理程序:

charlietfl使用off作为unbind被弃用意见提出。

+0

'绑定前()'和'解除绑定()'已被弃用。使用'off()' – charlietfl