2015-01-30 3 views
0

у меня есть простой выпадающий список, и мне нужно, чтобы скрыть (FadeOut) его, нажав на документКак близко всплывающее окно щелчком на фоне

enter image description here

это мой JQuery код:

var expandCheckbox = $('.filterShow'), 
    formCheckbox = $('.checkboxWrap'); 
expandCheckbox.click(function(e) { 
    e.preventDefault(); 

    if ($(this).hasClass('active')) { 
     $(this).removeClass('active'); 
     $(formCheckbox).fadeOut(200); 
    } else { 
     $(this).addClass('active'); 
     $(formCheckbox).fadeIn(100); 
    } 
}); 

$('body').not('.filterShow, .checkboxWrap').click(function() { 
    $(formCheckbox).fadeOut(100); 
}); 

SEE JSFIDDLE

ответ

0

Удалите «e.preventDefault», который здесь не используется, добавьте «return false», чтобы предотвратить распространение события в его родительский элемент, вместо «bod» используйте «document» y "в качестве селектора для затухания выпадающего списка при нажатии в любом месте документа.

$(document).ready(function(){ 
    expandCheckbox = $('.filterShow'), 
    formCheckbox = $('.checkboxWrap'); 
    expandCheckbox.click(function (e) { 

     if ($(this).hasClass('active')) { 
      $(this).removeClass('active'); 
      formCheckbox.fadeOut(200); 
     } else { 
      $(this).addClass('active'); 
      formCheckbox.fadeIn(100); 
     } 
     return false; 
    }); 

    $(document).click(function (e) { 
     if (expandCheckbox.hasClass('active')) { 
      expandCheckbox.removeClass('active'); 
      formCheckbox.fadeOut(200); 
     } 
     return false; 
    }); 

    formCheckbox.find('input:checkbox').click(function (e) { 
     e.stopPropagation(); 
    }); 
}); 
+0

, и если вы не закрываете всплывающее окно после нажатия на флажок? –

+0

Эти флажки исчезают из-за события document.click, поднятого из события щелчка флажка, поэтому в событии клика по флажку прекратите распространение. См. Добавленный код. – user3030212

+0

мы можем сделать это со всеми .checkboxWrap - div? –