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

时间:2012-07-04 12:42:37

标签: javascript jquery

我已经在div中动态创建了按钮。并为按钮绑定点击和其他事件。但问题是,click事件仅针对首次单击按钮触发了一个。对于其他绑定事件,它也是一样的。示例代码是

 $('#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准备好之后创建的按钮。

我也想知道它为什么会这样......?

1 个答案:

答案 0 :(得分:5)

如果使用jQuery 1.7+转到on(),并且实际上不需要每个():

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

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