2011-01-20 74 views
1

我有問題根據複選框從表中刪除行。以下是我所做的屏幕截圖。這是一張空中飛行細節的表格。在JQuery中刪除表格行

alt text

最大行可以被添加爲15行。我想要做的是給用戶刪除哪個特定的航班或刪除所有航班,方法是選中所有複選框並按刪除行。

以下是用來處理這個jQuery的:

$("input[id$='_del_flight']").click(function() { 

    var n = $("#" + this.id.slice(0,1) + "_airline_table tr").length; 

    $("#" + this.id.slice(0,1) + "_airline_table tr").each(function(){ 

     if ($("input[type=checkbox]",this).is(':checked')) { 
      if (n > 2) { 
       $(this).remove(); 
       n--; 
       //alert("Value n-- is: " + n); 
      } else { 
       $(this).find("input").val(''); 
       $(this).find("input[type=checkbox]").removeAttr("checked"); 
       $(this).find('option:first').attr('selected', 'selected').parent('select'); 
      } 
     } 
    }); 
}); 

這個jQuery做什麼,我想非常好。用戶可以選擇任何特定的航班信息並將其刪除,或者用戶可以將其全部刪除。

但是,當用戶決定全部刪除它們時,我所擁有的jquery將從行號2(如上圖所示爲Flight 1)中刪除行開始。我需要想出另一種方法,必須從最後一行刪除行,即航班15,航班14,航班13等等。我將通過使該行的所有輸入值爲空來保留行號2(由航班1使用)。

我曾嘗試使用jquery:gt選擇器,它不工作就像我想要的。因此,如果有人能夠幫助我從最後一行刪除行(對於全部刪除)並保留用戶可以根據用戶選擇刪除特定航班的功能,我將非常感激。

非常感謝您的幫助。

回答

0

我找到了解決方案。解決方案實際上不回答我的問題。這個解決方案是一種解決方法。

我問到如何從最後一行刪除表格行的原因是爲了保持編號爲1的編號一致等等。

因爲它只是一個ID來唯一標識該字段,因此該值可以發送到數據庫,我只是使用任何數字,只要它是唯一的。我編寫了jQuery腳本來查找現有的表格行,並從與該表格行相關聯的輸入之一中替換任何不是數字的東西。

然後,我會檢查數字是否存在或不從其他表格行。如果存在,我只需添加一個這個數字。我使用.each()來執行此操作,並且一旦找不到現有編號就會停止。這個數字,然後將被用來唯一標識該字段。

0

嘗試這樣:

$(":checked").each(function() { 
    $(this).parent().remove() 
}); 

您可能需要一對夫婦的父母()父()取決於你的HTML的樣子。

+0

我也試過這個。這不是我想要的方式。我還在想其他方式更好。希望有人也有任何想法來幫助我。 – Arief 2011-01-20 22:41:24

+0

你試過$(this).parent()。parent()。remove()了嗎? – ajma 2011-01-21 03:18:12

0

對不起,我無法解決你的代碼,所以我只是要建立它不同。我會盡量對它進行適當評論,以便它仍然有意義。

$("input[id$='_del_flight']").click(function() { 
    // Get the table with the right ID 
    var table = $('#' + this.id.slice(0,1) + '_airline_table'); 

    // Get all CHECKED checkboxes within the table 
    table.find('input[type=checkbox]:checked').each(function() { 

     // Get the row the checkbox belongs to 
     var row = $(this).closest('tr'); 

     // Is this the first row? 
     if (row.index() === 0) { 
      // Your resetting code 
      row.find("input").val(''); 
      row.find("input[type=checkbox]").removeAttr("checked"); 
      row.find('option:first').attr('selected', true); 
     } else { 
      // Remove the row 
      row.remove(); 
     } 

    }); 
});