0

我写了一个小插件来获取元素并将其放入模态框。一旦选择了元素,它就会像这样附加到正文中:

$('body').append(overlay, modal).show();

但是,我刚刚注意到,当单击或选择模式中的元素时,我似乎无法检测到任何操作。

我试过 .on() 和 .live() 无济于事。

$(document).ready(function() {
    $('#myLink').click(function() {
        $('#myEl').myModal();
    });

    $('#myLink').on('click', function() {
        alert('clicked me!');
    });
});

我错过了什么?

4

1 回答 1

1

尝试:

$(document).ready(function() {
    $(document).on('click', '#myLink', function() {
        alert('clicked me!');
    });
});

理想情况下,您希望在 DOM 中使用更接近元素的选择器,而不是document在文档准备好时出现的选择器。根据 jQuery 文档.on()

事件处理程序仅绑定到当前选定的元素;当您的代码调用 .on() 时,它们必须存在于页面上。为确保元素存在并且可以被选择,请在页面 HTML 标记中的元素的文档就绪处理程序内执行事件绑定。如果将新 HTML 注入页面,请在将新 HTML 放入页面后选择元素并附加事件处理程序。

于 2013-02-19T22:13:47.743 回答