@legotkin2015

Как спрятать блок по клику на любую другую область страницы?

https://codepen.io/anon/pen/YrLYRj

Есть блоки которые открываются по нажатию на кнопку. Если открыть первый блок, а потом открыть второй, то первый блок спрячется. А как сделать, чтобы блоки прятались если нажать на другом любом пространстве, кроме самого блока? То есть открыли, например, первый блок нажали где-то выше на тексте и блок закрылся. Пробовал вешать обработчик клика на body, но так не будет корректно работать. Как правильно сделать?
  • Вопрос задан
  • 198 просмотров
Сложность: Junior
Пригласить эксперта
Ответы на вопрос 3
  • @MrTimon
    Можешь навесить на mouseup событие. Получиться как то так:
    $(document).mouseup(function (e) {
         var blocks = $('.modal-block');
        if ($(e.target).closest('.modal-block').lenght==0) {
            blocks.hide();
        }
    });


    но на клик тоже можно, по тому же принципу.
    Ответ написан
  • @Kaizaki
    или так
    $('body').click(function(e) {
        if(e.target.className !== 'modal' && $('.modal-block').className !== 'hidden') $('.modal-block').addClass("hidden");
      });
    Ответ написан
  • beefjerky
    @beefjerky
    var $block = $('#block')
    
    $block.click(function() {
        var $this = $(this);
        $this.show();
    // в самом низу обработчика добавляешь
        $('*').not(this).one(function() { 
            $this.hide();
        });
    })
    Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Вакансии с Моего Круга Все вакансии
Заказы с Фрилансим Все заказы