1

与えられた例でいくつかの問題に直面しています。3 つの項目のリストがあり、すべてに削除ボタンがあります。削除ボタンをクリックすると、対応する行が削除されます。それは正常に動作します。

今私の問題は、リストに3つのアイテムすべてがあり、最初のアイテムのみを削除したい場合に、最初の削除ボタンをクリックすると、テーブルのすべての行が削除されることです。

デモHere

4

6 に答える 6

3

コードには基本的な欠陥が 1 つあります。

クリック時にボタン タグのみにバインドしていましたが、HTML にはボタン タグがなく、ボタン タイプの入力タグがありました。

この後、この場合は不要な「id」という変数を作成しています。jQquery では、これは必要ありません。

次のコード行を使用すると、すべてが処理されます。したがって、生活を簡素化し、これを jQuery をできるだけ短くします。

$(this).parent().parent().remove();

#divGrid が空である限り、#myTable 子要素全体を削除しない限り、div が空になることはないため、虚偽のステートメントです。

次の条件を使用してそれを行うことができます

if( $('#divGrid ').is(':empty') ) {
   $('#divGrid').html("All item removed");
}

本当に必要な jQuery を 3 行だけ使用したソリューションを次に示します。

編集:行が空であることを確認するためのフィドルがあり、空の場合、テーブルは「すべてのアイテムが削除されました」というテキストに置き換えられます

働くフィドル

于 2013-09-04T06:44:51.883 に答える
1

これを試して

$(':button').click(function() {  
    $(this).closest("tr").remove();
});

デモ http://jsfiddle.net/BLV2g/14/

より安全にするために、ボタンは他の場所を削除しません

$('#myTable :button').click(function() {  
    $(this).closest("tr").remove();
});
于 2013-09-04T06:38:34.380 に答える
0

これがあなたがやりたいことだと思います:

$('#myTable :button').click(function () {
  $(this).parent().parent().remove();
  var rowCount = $('#myTable tr').length;
  if (rowCount == 1) {
    $('#divGrid').empty();
    $('#divGrid').html("All item removed");
  }
});

背後にあるロジックは次のとおりです。

  1. 入力タイプのボタンがクリックされるたびに、jquery イベントをトリガーします。
  2. ボタンがあるtrコンテンツを削除します。
  3. タイトル行以外の行があるかどうかを確認し、タイトル行のみの場合はタイトルを置き換えます。

デモ

于 2013-09-04T06:47:44.130 に答える
0

これを試して、

function delSpec(rl)
  {    
     r=document.getElementById("insSpecc").rows.length;
     if(r!=2){
       document.getElementById("insSpecc").deleteRow(r-1)
     }
  }

デモhttp://jsfiddle.net/nKkhW/111/

于 2013-09-04T06:35:01.860 に答える