2011-07-12 71 views
4

請原諒我,我是網絡編程新手。我剛剛開始使用jQuery,我需要一些幫助。我需要確保用戶不能刪除表格的最後一行。我能夠成功地使用下列:jQuery不要刪除最後一個表格行

$(this).closest('tr:not(:only-child)').remove(); 

但我想顯示一條警告消息,如果行的最後一排,而不是隻是沒有做任何事情。我嘗試以下,但它沒有工作:

if($(this).closest('tr:only-child')) { 
    alert('cannot delete last row'); 
} 
else { 
    $(this).closest('tr').remove(); 
} 
+2

是您的目標,不刪除列的底部行,或者不允許用戶刪除行,如果它的只有列中的行?這些將會非常不同。 – Anthony

+0

我想阻止他們刪除最後一行。 – Dave

回答

4

嘗試:

if($(this).closest('tr').is('tr:only-child')) { 
    alert('cannot delete last row'); 
} 
else { 
    $(this).closest('tr').remove(); 
} 
+0

這是行不通的,因爲'.closest('tr')'會返回一個帶有1個元素的jQuery對象,':last'會檢查這個元素是否是該集合中的最後一個元素(它總是因爲只有一個)。你需要'tr:last-child'。 – user113716

+0

帕特里克是正確的。但是我能夠使用.is並提出這個工作:'if($(this).closest('tr')。('tr:only-child'))' – Dave

+0

@patrick dw:Correct ,將解決這個問題。謝謝 – Sarfraz

1

要刪除行,但允許任何行是最後的(不可刪除)行:

$('td').click(
    function(){ 
     if ($(this).closest('table').find('tr').length > 1) { 
      $(this).closest('tr').remove(); 
     } 
     else { 
      alert("Can't delete rows of class 'noDelete.'"); 
     } 
    }); 

JS Fiddle demo

刪除的行除了那些 'noDelete' 類名:

$('td').click(
    function(){ 
     if (!$(this).closest('tr').hasClass('noDelete')) { 
      $(this).closest('tr').remove(); 
     } 
     else { 
      alert("Can't delete the last row."); 
     } 
    }); 

JS Fiddle demo

0

如何表的<tbody>使用這種在計數<tr>元素的數量:

$(this).closest('tbody').children('tr').length