jquery点击除了div和孩子之外的任何东西

时间:2013-07-27 00:54:04

标签: jquery

我有一个登录窗口,我试图通过点击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淡出)?看起来合法吗?

1 个答案:

答案 0 :(得分:2)

解决这个问题的一种方法是防止模态中的点击超出模态。像这样:

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

现在在模态中点击不会冒泡到执行fadeOut

的外部处理程序