使用动态创建按钮单击事件未触发

Click event not firing with dynamically create buttons

本文关键字:事件 单击 按钮 动态 创建      更新时间:2023-09-26

我已经在div中动态创建了按钮。并绑定按钮的单击和其他事件。但问题是,点击事件只为第一次点击按钮触发一个。对于其他绑定事件,情况相同。示例代码为

 $('#divButtons input[type=button]').each(function () {
     $(this).bind('mouseover', function (e) {
         // some work
     }).bind('mouseout', function (e) {
         // some work
     }).bind('click', function (e) {
         // some work
     });
 });

将其绑定到document.ready()时效果很好 但就我而言,按钮是在 DOM 准备就绪后很久创建的。

我也想知道为什么它表现得这样...?

如果使用

jQuery 1.7+,则使用on(),并且实际上不需要each():

$(document).on({
    mouseover: function(e) {
            // some work
    },
    mouseout: function(e) {
           // some work
    },
    click: function(e) {
           // some work
    }
}, '#divButtons input[type=button]');

将文档替换为委派事件处理程序的最近的非动态元素。