0

テーブルからチェックボックスに関連付けられている行をいくつか削除する必要があります。私はこれまでにこれを思いつきました:

$("#RemoveSelectedTests").click(function () {
    var testElements = [], len, rowToRemove;
    testElements = getSelectedTests('what', "selectedTests");
    len = testElements.length;

    for (var i = 0; i < len; i++) {
        rowToRemove = testElements[i].substring(testElements[i].lastIndexOf("(") + 1, testElements[i].lastIndexOf(")"));
        $("#" + rowToRemove).remove();
    }
});

私には上記は正しいように見えますが、少し一貫性がないように見えます。つまり、行を正しく削除する場合もあれば、行を削除するために [削除] ボタンを複数回押す必要がある場合もあります。ここで他に何が起こっているのかわかりません。私は何を間違っているのでしょうか?

getSelectedTests処理する行を取得するだけです。

function getSelectedTests(what, id) {
    var selectedTests = [];
    $("#" + id + " .rdbtn[type=checkbox]:checked").each(function () {
        if (!what) {
            selectedTests.push($(this).val());
        }
        else {
            selectedTests.push($(this).data('desc') + ' (' + $(this).val() + ')');
        }
    });
    return selectedTests;
4

1 に答える 1

1

これをもう少し簡単にできると思います。

$(function () {
    $("#removeSelectedTests").click(function () {
        $(".rdbtn[type=checkbox]:checked").each(function() {
            $(this).parents("tr").remove();
        });
    });
});

<table>
  <tr>
    <td><input type="checkbox" class="rdbtn" value=1></td>
    <td>Test 1</td>
  </tr>
  <tr>
    <td><input type="checkbox" class="rdbtn" value=2></td>
    <td>Test 2</td>
  </tr>
  <tr>
    <td><input type="checkbox" class="rdbtn" value=3></td>
    <td>Test 3</td>
  </tr>
  <tr>
    <td><input type="checkbox" class="rdbtn" value=4></td>
    <td>Test 4</td>
  </tr>
  <tr>
    <td><input type="checkbox" class="rdbtn" value=5></td>
    <td>Test 5</td>
  </tr>
</table>
<button id="removeSelectedTests">Remove Tests</button>
于 2013-10-28T21:59:01.267 に答える