jQuery单击处理程序未在模态窗口内触发

时间:2013-05-21 05:12:02

标签: javascript jquery click modal-dialog simplemodal

我有一个非常简单的点击处理程序,可以在点击时发出AJAX GET请求,如下所示:

$('span.switch-option').click(function() {
    $(this).parents('div.log-in-option').hide();
    $(this).parents('div.log-in-option').siblings('div.log-in-option').fadeIn();
});

这适用于网站上的任何其他地方。但是,当我尝试在模式窗口中单击具有类<span>的{​​{1}}元素时,事件不会触发。但是,在控制台中输入click-handler函数的内容并运行它们会执行所需的行为。

为什么点击处理程序不会在此模态窗口中触发?我使用流行的SimpleModal插件http://www.ericmmartin.com/projects/simplemodal/和jQuery 1.9.1。

这里有一个实例:http://ec2-107-22-8-70.compute-1.amazonaws.com/thread/19。如果单击switch-option或任何用户的声誉,然后尝试单击对话框中的蓝色大链接,则单击处理程序不会触发。在不同的模式窗口中,其他单击处理程序也会发生此行为。

1 个答案:

答案 0 :(得分:1)

当您的脚本(main.js)运行时,dom中不存在元素'li.log-in, a.log-in',它们会在创建弹出窗口时动态加载,因此jQuery无法绑定事件处理程序

尝试事件传播

$(document).on('click', 'li.log-in, a.log-in', function() {
        $.get('/login/', function(data) {
            //make a modal window with the html
            $.modal(data);
        });
        return false;
    });