jQuery通过动态id删除表行

标签 jquery delete-row

我有以下代码

<div>
    <input type="text" maxlength="20" id="nameText"></input>
    <button type="button" id="add">Add</button>
</div>
<div>
    <table id="form">
        <tbody>
            <tr>
                <th>Name</th>
                <th>Delete</th>
            </tr>
        </tbody>
    </table>
</div>

jQuery 部分

var rowNum = 0;

$('#add').click(function() {
    var name = $('#nameText').val();
    rowNum ++;
    var row = '<tr id="row' + rowNum + '">'
            + '<td>' + name 
            + '<button type="button" id="deleteRow' + rowNum + '">Delete</button>'
            + '</td>'
            + '</tr>';

    $(row).insertAfter($("#form > tbody > tr:last"));
    $('#deleteRow' + rowNum).click(function () {
        $('#row' + rowNum).remove();
    });
});

当您单击“添加”按钮时,这将动态添加表格行,我想按 id 删除行,但它只删除最后一行,我该如何修复它?

jsfiddle:http://jsfiddle.net/sgs603cm/

最佳答案

不要使用增量 id 属性 - 它们很快就会变得难以维护。

相反,使用基于类选择器的单个通用委托(delegate)事件处理程序,并使用 this 关键字来引用引发事件的元素。试试这个:

$('#add').click(function() {
    var name = $('#nameText').val();
    rowNum ++;
    var row = '<tr id="row' + rowNum + '">'
            + '<td>' + name 
            + '<button type="button" class="delete">Delete</button>'
            + '</td>'
            + '</tr>';

    $(row).insertAfter($("#form > tbody > tr:last"));
});

$('#form').on('click', '.delete', function (e) {
    e.preventDefault();
    $(this).closest('tr').remove();
});

关于jQuery通过动态id删除表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33342111/

相关文章:

jquery 禁用按钮,直到选择两个选择字段

javascript - 不显示 HTML 类别

matlab - 删除 MATLAB 中具有相同值的所有行

mysql - 删除查询 mysql - 需要说明

MySQL,从id匹配且时间戳早于current_time的多个表中删除

javascript - 单击外部背景 div 时如何退出弹出联系表单?

javascript - Jquery Flot - 随着用户缩放使数据更加精细

javascript - JQuery 清除自动完成组合框值

javascript - 从页面中删除行而不刷新页面

php - 如何删除使用 PDO 插入 MySQL 表的最后一条记录?