0

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

$('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>具有类的元素时switch-option,该事件不会触发。但是,在控制台中输入 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 。如果您单击50,000 reps或任何用户的信誉然后尝试单击对话框中的蓝色大链接,则单击处理程序不会触发。这种行为也会发生在不同模式窗口中的其他点击处理程序中。

4

1 回答 1

1

当您的脚本(main.js)正在运行'li.log-in, a.log-in'时,dom 中不存在元素,它们会在创建弹出窗口时动态加载,因此 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;
    });
于 2013-05-21T05:13:43.020 回答