JQuery - 无法删除表行

时间:2013-12-01 08:36:55

标签: javascript jquery html-table

我不知道此代码中的错误是什么。我已正确检测到父母。但是不起作用。

这是HTML代码

<table>

    <tbody class="tbody">
        <tr id="row_1">
            <td>
                <input type="text" id="row_1_jumlah_1" name="row_1_jumlah_1" value="1" readonly="readonly" class="form-control" />
            </td>
            <td></td>
        </tr>
        <input type="button" class="btn green" value="Tambah Satuan" id="add_row" style="margin-bottom: 10px; margin-left:10px;" />
    </tbody>

</table>

这是js代码

$("#add_row").click(function () {
    var last_index_tr = $(".tbody tr").length;
    var new_index_tr = $(".tbody tr").length + 1;
    var row = $("<tr id='row_" + new_index_tr + "'>");
    var input = $("<td>     <input  class='form-control' type='text' id='row_" + new_index_tr + "_jumlah_1' name='row_" + new_index_tr + "_jumlah_1' value='1'  readonly='readonly' /> </td>");
    var action_delete = $("<td> <input class='btn btn-danger' type='button' id='row_" + new_index_tr + "_delete' class='delete' value='delete' /> </td>");

    action_delete.click(function () {
        var parent_1 = action_delete.parent();

        var get_tr_parent_id = $(parent_1).attr('id');
        //document.write(get_tr_parent_id); 
        $("#".get_tr_parent_id).remove();
    });


    row.append(input);
    row.append(action_delete);
    row.append("</tr>");
    $(".tbody").append(row);
});

我想用删除按钮或action_delete删除表内的tr(参见js代码)。我完全得到了父母。但我还是不能删除tr。

2 个答案:

答案 0 :(得分:3)

试试这个,您可以使用.on挂钩click handler在运行时创建的delete button。虽然您的挂钩工作正常,但在处理创建.on的{​​{1}}时,使用elements是一种很好的做法。顺便说一下,您必须将dynamically#连接在一起+这与您的代码存在问题,请参阅代码here

.

DEMO


编辑:

尝试以下代码,这将通常只为您的整个删除按钮注册一次点击事件。

var action_delete = $("<td> <input class='btn btn-danger' type='button' id='row_" + new_index_tr   +"_delete' class='delete' value='delete' /> </td>"); 

$(document).on('click',"#row_" + new_index_tr +"_delete",function(){
       $(this).closest('tr').remove();
});

DEMO - I

答案 1 :(得分:0)

您的删除方法不正确。它应该是:

$("#" + get_tr_parent_id).remove(); 

它当前正在返回undefined而不是连接两个字符串。