javascript - jQuery 单击事件不适用于动态添加的元素

标签 javascript jquery

我一直在尝试在这段代码上使用 jQuery,但它没有响应。我动态地尝试将一些行添加到 HTML 表格的末尾,并且还添加了一个取消按钮。取消按钮上的点击功能似乎不起作用。

我无法在这里发布完整的代码,所以我添加了一个指向 jsFiddle 的链接.

部分 JavaScript 代码:

$('#myTable tbody:last').after('<tbody class="newrow"><tr><td> <input  type="text" class="app"></td><td><input type="text" class="env"> |\n\
 </td><td><input type="text" class="region"> | </td><td><input type="text"  class="url"> | \n\
</td><td><button class="cancel">X</button></td>\n\
</tr></tbody>');          
}

$('.cancel').on('click', function() {
    alert();
   //$(this).closest('tbody').fadeOut(2000); 
});

最佳答案

您需要使用委托(delegate)事件来捕获动态添加元素的点击事件。

实现评论中建议的更改后,将您的点击处理程序更改为此

$('body').on('click','.cancel', function() {
    console.log($(this));
    //$(this).closest('tbody').fadeOut(2000); 
});

这将在浏览器控制台中输出已单击的按钮,它也应该适用于新元素。

关于javascript - jQuery 单击事件不适用于动态添加的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33709767/

相关文章:

使用 javascript/jquery 隐藏 div 的 PHP 函数

javascript - 带有 if 的 html 属性控件

javascript - 合并对象属性并分配具有不同名称的同级属性

javascript - 如何将 Javascript Promise Chaining 与 Firebase 身份验证和 Firebase 结合使用?

javascript - 将 2d 数组 jquery post 发送到 java servlet

javascript - window.jQuery.ui 未定义

javascript - 将数据从一个 Backbone View 传递到另一个

javascript - 为什么没有在 ns-popover 弹出窗口中选择 radio 。仅在表格最后一列弹出窗口中选择单选

javascript - Bootstrap jquery sortable 只对行进行排序?

javascript - 谷歌 Material 设计 : mdl-menu does not react on dynamical load