3

我有一个登录窗口,我试图通过单击div(以及切换淡入和淡出的登录按钮)以外的任何位置淡出

 jQuery(document).ready(function ($) {
    $('.login').click(function () {
        $('#modal_login').fadeToggle('fast');
    });

    $('body').click(function (e) {
        if (!$(e.target).is('.login, #modal_login *')) {
            $('#modal_login').fadeOut('fast');
        }
    });
});

这一切看起来都很简单,但我的问题是关于#modal_login它的孩子们。如果单击 中的任意位置#modal_login div,它会淡出。我也试过#modal_login > *了,没有运气。

代码运行良好,带有“ .login”类按钮。

所以我的问题是,我是否甚至使用正确的语法来完成我想要完成的事情(当点击或点击它的任何孩子时不会让 div 淡出)?似乎合法?

4

1 回答 1

2

解决此问题的一种方法是防止模态内的点击冒泡超出模态。像这样的东西:

$("#modal_login").click(function(e){
    e.stopPropagation();
});

现在,模式内的点击不会冒泡到执行fadeOut.

于 2013-07-27T01:06:30.157 回答