2013-07-27 38 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