2017-04-24 58 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