2012-05-12 30 views
0

我使用AJAX使用jquery,我使用下面的代碼片段刪除行:確認框超過一次出現

$('#example a.delete'). live('click', function (e) { 
e.preventDefault(); 
if (confirm("Are you sure you want to delete this row?")) 
{ 

    alert("Hello World!") 
} 

}); 

當我點擊網格視圖顯示按鈕,網格視圖顯示無頁由於ajax令人耳目一新。如果我多次點擊網格視圖顯示按鈕,則會相應地再次刷新網格視圖區域。但確認框顯示不止一次,這等於我的號碼。點擊網格視圖顯示按鈕,當我點擊單行刪除按鈕。

如何避免這一點!

編輯

HTML代碼:

<td><a class="delete" href="#" style="margin-left: 10px"><img src="images/delete-icon.png" width="16px" height="16px" /></a></td> 

編輯

完整的代碼段:

$('#example a.delete'). live('click', function (e) { 
e.preventDefault(); 
if (confirm("Are you sure you want to delete this row?")) 
{ 
    $getCode = $(this).parent().parent().attr('id'); 
    var oTable = $('#example').dataTable(); 
    var index =oTable.fnGetPosition(document.getElementById($getCode)); 

    $.post("DeleteDepartment", { 
     depID:$getCode     
    }, function(data) { 
     if(data.result >0){ 
      var oTable = $('#example').dataTable(); 
      oTable.fnDeleteRow(index); 
     }else{ 
      alert("Operation Fail"); 
     } 
    }); 

} 

}); 
+0

你用的是什麼jQuery版本? –

+0

jQuery v1.7.1 @ltiong_sh –

回答

1

你似乎是連接多個事件到按鈕。你確定你只打一次電話live(),一次?如果你多次調用它,你會得到多個處理程序。

(當然,這就是爲什麼我寧願只使用.onclick = function() {...}個人)

+0

是的親愛的,我打電話給它@Kolink –

0

它看起來像代碼寫入到每次點擊做一次確認。 如果您只希望它確認一次,則必須使代碼記住您已經確認。

該行在服務器調用成功回調函數之前不會被刪除。在此期間,您可以繼續點擊該行並觸發點擊事件。

您可以在用戶確認時在行上設置變量或屬性,然後每次點擊時都檢查此變量。如果變量沒有設置,只顯示確認信息。

或者您可以更改單擊元素的狀態,更改其圖像,更改樣式,設置屬性。您都可以通知您的代碼已被點擊並向用戶指出該行已被標記爲刪除。

或者你可以嘗試jquery的.one()方法來附加事件。

+0

alert(「Hello World!」)只是示例,在這裏我刪除當前行。但它確認不止一次@joshp –

+0

我明白了。這從代碼中看不出來。如果你沒有找到解決方案,最好做一個小例子,實際顯示問題並把它放在jsfiddle中。 – joshp

+0

我已經粘貼了完整的代碼@joshp –

4
$('#example a.delete').unbind('click').bind('click', function (e) { 
    e.preventDefault(); 

    if (confirm("Are you sure you want to delete this row?")) 
    { 

     alert("Hello World!") 
    } 

});

+0

你的代碼不能用於添加動態新行,直到頁面刷新@pankil thakkar –