Скрытие блока при клике на пустое пространство jQuery?

Задача:
Необходимо при клике на опр. кнопку, выводился скрытый блок, и при клике на любое пустое пространство кроме клика по самому блоку, скрывался блок.
Ниже скриншоты и код.
$('.head-main-menus-li-a-list').click(function(){
        var is    = $(this);
        var block = $('.head-main-menus-li-div-sky-list');
        is.css('background','#484848');
        block.slideDown(300)
    })
    $('body:not(.head-main-menus-li-div-sky-list)').click(function(){
        var block = $('.head-main-menus-li-div-sky-list');
        if (block.css('dusplay') === 'block'){
            block.slideUp(300)
        }

    })

Кнопка
screen.png
Раскрытый блок
screen.png

Проблема:
По сути код body:not(.head-main-menus-li-div-sky-list) должен решать по описании мою проблему, но не решает. Как сделать так что бы после того как раскроется скрытый блок, при клике на пустое пространство, куда угодно кроме клика на самом раскрытом блоке, блок скрывался.
Что бы люди поняли о чем я, зайдите на Яндекс.маркет, там есть корзина, при клике на нее, появляется блок, для того что бы срыть ее необходимо кликнуть на любое пространство, кроме самого блока. Надеюсь внятно объяснил и не оставил непонятных моментов.
  • Вопрос задан
  • 3279 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
вешаете обработчик на document, и по клику прячите попап.

При клике же на ваш этот блок, просто вызываете stopPropogation. Этим вы выключите дальнейшее всплытие события и не будете пускать ивент вверх по DOM дереву, собственно click не дойдет до document.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы