0

我正在将“密码重置成功消息” div 动态加载到“密码重置” div 中,如下面的片段所示。'password-reset-success-message' div 在页面加载时隐藏,并被覆盖到 'password-reset' div,如下所示。

    $("#password-reset").html($("#password-reset-success-message").html());

现在'password-reset-success-message' div 有一个'btnPasswordResetOK' 按钮,它将关闭密码重置模式对话框。但是这个 click() 事件没有被绑定。我没有收到警报消息。我正在做这一切,准备好包裹在文件中。

     $(document).ready(function(){  

       $("#btnPasswordResetOK").click(function() {

         alert();
       });

    });

注意:这个问题与我的问题几乎相似。.但没有答案。

更新: 我在使用隐藏的 div 更新 html 后绑定,它可以工作!, 下面的代码片段

      $("#password-reset").html($("#password-reset-success-message").html());

       $("#btnPasswordResetOK").click(function() {

            alert();
       });
4

2 回答 2

3

将其委托给要添加 html 的父元素

如果使用带有 .on() 的 jQuery 1.7+

$("#password-reset").on('click','#btnPasswordResetOK',function(){

})

与代表

$("#password-reset").delegate('#btnPasswordResetOK','click',function(){

})

来自关于使用哪种方法的 jQuery 文档

$(选择器).live(事件、数据、处理程序); // jQuery 1.3+

$(document).delegate(selector, events, data, handler); // jQuery 1.4.3+

$(document).on(事件、选择器、数据、处理程序); // jQuery 1.7+

By delegating, you bind the event handler to a static parent element that doesn't change and exists at the time of binding. You specify the element and the events you want to listen to, and when the event bubbles up it will get handled by the static parent element.

于 2012-11-14T14:40:34.407 回答
1
$(selector).live(events, data, handler);                // jQuery 1.3+
$(document).delegate(selector, events, data, handler);  // jQuery 1.4.3+
$(document).on(events, selector, data, handler);        // jQuery 1.7+

触发就绪事件时,您的内容不在页面上。您动态生成元素和内容,因此您必须使用 live/on 事件处理程序。

于 2012-11-14T14:38:25.707 回答