2011-07-12 24 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'は要素が最後のものであるかどうかをチェックします。 1つしかないので)。代わりに 'tr:last-child'を使います。 – user113716

+0

patrickが正しいです。しかし、私は.isを使用してこれを実行することができました: '$(this).closest( 'tr')が( 'tr:only-child'))' – Dave

+0

@patrick dw:正しい、それを修正します。ありがとう – 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

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

JS Fiddle demo: 'NODELETE' クラス名のものを除いてすべての行を削除するには

。テーブルの<tbody>これを使用して<tr>要素の数を数える程度

0

方法:

$(this).closest('tbody').children('tr').length 
関連する問題