2012-08-22 34 views
0

我有以下代碼顯示一個對話框,以確認是否應該刪除一個項目。問題是,每次點擊刪除按鈕時,該項目的ID每次都被添加到#dialog數據中。.removeData不刪除數據ID

因此,我第一次刪除時,它會像我期望的那樣提醒該ID。如果我點擊另一個要刪除的項目,它也會顯示以前的ID。如何正確清除附加到對話框的數據?

// Delete confirmation modals 
$('#dialog').on('show', function() { 

    var $this = $(this); 
    var id = $this.data('id'); 

    $('#delete-confirm').click(function(e) { 
     e.preventDefault(); 

     $this.removeData('id', id); 

     alert(id); 

    }); 
}); 

$('.delete').click(function(e) { 
    e.preventDefault(); 
    $('#dialog').data('id', $(this).data('id')); 
}); 
+0

什麼是錯誤? –

+0

你試過'$ this.removeData('id')'而不是'$ this.removeData('id',id)'? 'removeData()'只有一個參數。 –

+0

沒有錯誤,問題在於我如何在問題中描述。當我只需要它一次時,它會不斷地將數據添加到數據中。 – Motive

回答

3

你永遠更新id變量的.data('id')

// Delete confirmation modals 
$('#delete-confirm').click(function(e) { 
    e.preventDefault();  
    $("#dialog").removeData('id');  
    alert($("#dialog").data('id'));  
}); 

$('.delete').click(function(e) { 
    e.preventDefault(); 
    $('#dialog').data('id', $(this).data('id')); 
}); 

而且新的值,請確保你是不是多個事件綁定到相同的元素,這可能與delete-confirm元素髮生。通過多次顯示對話框並確認刪除多次來確認。如果警報開始發生的次數越來越多,那麼您將重新綁定事件。

+0

雅,對話框出現多次。任何想法如何防止它做到這一點? – Motive

+0

將點擊事件綁定移到show事件之外。 –