2013-07-27 113 views
3

我有一个登录窗口,我想通过点击任何地方淡出,但在div(和切换淡入和登录按钮淡出)jQuery的点击任何东西,但股利和儿童

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_logindiv任意位置单击,就淡出。我试过#modal_login > *以及没有运气。

的代码工作得很好,与“.login”类按钮。

所以我的问题是,我是不是即使使用了什么,我试图完成正确的语法(不要对点击后的股利淡出或点击任何它的孩子)?这看起来合法吗?解决此

+1

http://api.jquery.com/not-selector/ –

回答

2

的一种方式是防止模内点击冒泡超越模式。事情是这样的:

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

现在的模式中点击不会泡到外处理该做的fadeOut

+0

这解决了问题但是,打破了模态窗口,其中有一个丢失的密码字段类似的淡入淡出效果的功能。我最终采取了一种不同的方式,而不是将目标锁定在“主体”上,而是瞄准了一些主要的结构单元,并且达到了我试图达到的效果。 – user2624620