jquery - 如何在动态创建的按钮上使用 jQuery 捕获点击事件

标签 jquery html html-table row

我有 HTML 表格,可以在其中动态创建新行。对于每一行,我还创建一个按钮,可以删除刚刚创建的行。但 jQuery 不会捕获动态创建的行中的事件。 HTML 代码:

<table>
...
<tbody id="nuevo_producto">
    <tr id="1">
        <td><input type = "hidden" name = "tabla-1">1</td>
        <td><input readonly="readonly" class = "form-control" placeholder = "Ref." type = "text" size = "15" id = "modelo_ref_1" name = "modelo_ref_1" value="122"></td>
        <td><input class = "form-control" placeholder = "Ref. C" type = "text" size = "15" id = "modelo_refc_1" name = "modelo_refc_1" value="231"></td>
        <td><input class = "form-control" placeholder = "Modelo" type = "text" size = "60" id = "modelo_modelo_1" name = "modelo_modelo_1" value="sadsadsad"></td>
        <td><input class = "form-control" placeholder = "PVP" type = "text" size = "15" id = "modelo_pvp_1" name = "modelo_pvp_1" value="12"></td>
        <td><button class="btn btn-default delete_row" id="1" value="eliminar_fila"><span class="glyphicon glyphicon-minus"></span></button></td> <!-- Button to delete row -->
    </tr>
    <tr id="2">
    ... <!--another rows that I have created dinamically-->
    </tr>
    ...
</tbody>
</table>

用于删除刚刚单击的行的 jQuery 代码

$(".delete_row").each(function() {
    $(this).on("click", function(e) {
        e.preventDefault();
        $("tr#" + $(this).attr("id")).remove();
    });
});

问题是事件按钮仅适用于现有行。如果我创建一个新行,“单击”事件将不起作用。

最佳答案

您需要使用Event Delegation

$('#nuevo_producto').on('click','.delete_row',function(){
    $("tr#" + $(this).attr("id")).remove();
});

.on()

<小时/> Two HTML elements with same id attribute: How bad is it really?

ID 必须是唯一的

<小时/>

更改您的 html

<tr id="1">

<tr data-id="1">

比使用

$('#nuevo_producto').on('click','.delete_row',function(){
    $('tr[data-id="'+$(this).data('id')+'"]').remove();
});

<小时/> 或

改变

<button class="btn btn-default delete_row" id="1"

<button class="btn btn-default delete_row" data-id="1"

比使用

$('#nuevo_producto').on('click','.delete_row',function(){
    $('#'+$(this).data('id')).remove();
});

.data()

关于jquery - 如何在动态创建的按钮上使用 jQuery 捕获点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21913283/

相关文章:

javascript - 获取空白网页并显示 'event.returnValue is deprecated' 警告

jquery - nivo-slider 下载时没有图像链接

html - 不同浏览器上的 td 高度行为

css - 突出显示 HTML 表格中没有行跨度的悬停行中的单元格

jquery - 如何更改网页的默认滚动速度、滚动量、滚动惯性

javascript - 如何为 Gmail、Hotmail 等电子邮件阅读器创建预览模式

javascript - 从 Summernote 中的光标位置获取上一个单词

html - 如何在不与整个网站交互的情况下旋转背景图像?

jquery - 单独在一行上运行 jQuery 函数

具有固定列宽和最大高度的 CSS 表格