2017-05-08 73 views
1

我有一個動態按鈕來編輯對象的一些數據。 現在,一旦數據更新成功,我向用戶發出警報,聲明它已成功完成。解除綁定動態創建的編輯按鈕

但是,當用戶第二次編輯同一個對象時,它將引發兩次相同的警報。同樣,第三次更新同一個對象的次數等等。

我相信,我需要取消綁定動態按鈕上的點擊事件來解決這個問題,並確保每次編輯對象時警報彈出一次。 如何取消綁定我的代碼中'.edit-btn'按鈕上的點擊事件? 下面的代碼:

$(document).on('click', '.edit-btn', function(){ 
    var objIndex = $(this).parents('.parent').index(); 
    $('#updateForm').submit(function(e){ 
     updataData(objIndex); 
     return false; 
    }) 
}); 

function updateData(oldObjIndex){ 
    // I've the code here to grab the new values from the form 

    /* Assign the new values to the new object */ 
    var newObj = { 

     "key1" : value1, 
     "key2" : value1, 
     "key3" : value1, 
     "key4" : value1, 

    } 
    savedData.splice(oldObjIndex, 1, newObj); 
    alert('Updated successfully!'); 
} 
+1

嘗試像'$(文件).off( 「點擊」,「編輯 - btn)「''from this source http://api.jquery.com/off/ –

+1

將'submit()'處理程序移到'click'處理程序的外部 –

回答

1

需要下面放submit()處理器外click()喜歡和檢查: - 。

$(document).ready(function(){ 
    var objIndex = ''; 
    $(document).on('click', '.edit-btn', function(){ 
     var objIndex = $(this).parents('.parent').index(); 
    }); 

    $('#updateForm').submit(function(e){ 
     updataData(objIndex); 
     return false; 
    }) 
}); 
function updateData(oldObjIndex){ 

    var newObj = { 
     "key1" : value1, 
     "key2" : value1, 
     "key3" : value1, 
     "key4" : value1, 
    } 
    savedData.splice(oldObjIndex, 1, newObj); 
    alert('Updated successfully!'); 
} 
+0

如果我這樣做,則無法將objIndex傳遞給updateData方法正確。它不起作用。 – Sunny

+0

@Sunny現在檢查並嘗試 –

+0

完美!萬分感謝!這就是我正在尋找的! :) – Sunny