2011-01-21 91 views
1

我有一些這樣的代碼刪除行則顯示一個對話框。jQuery的刪除錶行幫助

我第一次點擊刪除ID直接刪除行。 但我試圖刪除任何後續行我有時需要多次點擊才能刪除行。

有時對話節目,該行還在那裏!

什麼事?

編輯 - 數據庫得到正確更新,但行仍然存在。它相當不穩定有時它會消除有時我必須點擊兩次。

$(".delete-item").click(function() { 
      var itemId = $(this).attr("id").split('-')[1]; 
      var iType = $(this).attr("id").split('-')[0]; 

      $.post('/User/Delete/', { id: itemId, itemType: iType },function (json) { 
       if (json.success) { 

        console.log("#row-"+itemId); 
        $("#row-"+itemId).hide('slow', function(){ $(this).remove(); }); 

        //$("#dialog-success-delete").dialog("open"); 


       } else { 
        if(json.error=="unknown"){ 
         $("#dialog-unknown-error").dialog("open"); 
        } 
        if(json.error=="unauthenticated"){ 
         $("#dialog-unauthenticated").dialog("open"); 
        } 
       } 
      }); 
+1

你應該表現出你的代碼的其餘部分;我們看不到您的刪除按鈕的點擊處理程序,這可能是問題所在。 – Jacob 2011-01-21 16:09:33

+0

完整的代碼現在又增加了 – raklos 2011-01-21 16:35:05

回答

1

原來的問題是我有多個行與頁面上相同的ID! 我使用的標籤和表在不同的標籤!

0

驗證您的選擇器是否正確。使用Chrome或Firefox + Firebug + Firequery,以及console.log($"#row-"+itemId),您有.remove()。最可能的原因是itemId沒有像你期望的那樣排列行ID。

1

這可能是一個計時問題 - 如果在單擊另一行之前沒有發生動畫回調,則itemId將引用錯誤的項目。

更改爲:

$("#row-"+itemId).hide('slow', function(){ $(this).remove(); }); 

由於模式只是有時會表現出,我敢肯定還有另外一個問題也是如此。

上有post api記約默默地失敗

與jQuery.post(請求)返回 錯誤代碼,它會悄悄地失敗 ,除非劇本也被稱爲 global .ajaxError()

這將是我最好的猜測,成功回調不會因爲服務器錯誤而發生。

0

對於初學者,您應該在隱藏發生後在函數中包含對話框,以便只在行被隱藏時彈出。其次,在進入後使用this選擇器。這驗證了您始終在最初單擊的同一行上工作。最後,我沒有在代碼中看到click方法,因此請確保您的方法正確。

此代碼對我的作品在一個快速測試:

$("#row-"+itemId).click(function() { 
    $(this).hide('slow', function() { 
    $(this).remove(); 
    $("#dialog-success-delete").dialog("open"); 
    }); 
});