Скрытие элемента при клике вне его

240
05 апреля 2018, 13:42

Данный код скрывает элемент .header__bottom-hover-menu, при клике вне его.

$(function() { 
 
  $('.header__nav-item').click(function() { 
    if (window.innerWidth > 1150) { 
      let overlay = $('.overlay'); 
 
      $('.header__bottom-hover-menu.active, .header__top, .header__bottom').removeClass('active'); 
      $('.header__nav-item > a.active').removeClass('active'); 
      overlay.removeClass('active'); 
 
      if ($(this).find('.header__bottom-hover-menu').length > 0) { 
        $('a.submenu').addClass('active'); 
        $('.header__top, .header__bottom').addClass('active'); 
        overlay.addClass('active'); 
      } 
    } 
  }, function() { 
    if (window.innerWidth > 1150) { 
      $('.header__bottom-hover-menu.active, .header__top, .header__bottom').removeClass('active'); 
      $('.overlay').removeClass('active'); 
      $('.header__nav-item > a.active').removeClass('active'); 
 
      $('.header__hover-list-item.active').removeClass('active'); 
      $('.header__hover-tab.active').removeClass('active'); 
 
      $(this).find('.header__bottom-hover-menu').addClass('active'); 
      $('.header__hover-list-item[data-tab="1"]').addClass('active'); 
      $('.header__hover-tab[data-tab="1"]').addClass('active'); 
    } 
    return false 
  }); 
  $(document).on('click', function(e) { 
    var myDiv = $(".header__bottom-hover-menu"); 
    if (!myDiv.is(e.target) && myDiv.has(e.target).length === 0) { 
      $('.header__bottom-hover-menu').hide(); 
    } 
  }) 
});

но этот элемент ранее сам появляется при клике на пункт меню, и теперь, после того как он пропал, обратно он не появляется при клике на пункт меню. Как сделать, чтобы можно было кликнуть на пункт меню - появился элемент, кликнул вне - исчез. И так по всем пунктам, без перезагрузки страницы.

Answer 1

Вам нужно выполнить следующий код, чтобы элемент опять появился

$('.header__bottom-hover-menu').show();

При обработчике клика можно контролировать когда элемент должен появится, а когда исчезать.

READ ALSO
Шаги заполнения формы с помощью bootstrap 3 и валидацией

Шаги заполнения формы с помощью bootstrap 3 и валидацией

Пытаюсь сделать форму отправки с шагамиBootstrap 3

325
Валидация в nodejs

Валидация в nodejs

Подскажите как сделать валидацию и какие библиотеки используете ?

211
Как подключить mysql на js

Как подключить mysql на js

Как подключить MySQL в jsКак потом взаимодействовать с БД?

242
MySQL - выполнение запроса с 2.5 часов до 2.5 минут

MySQL - выполнение запроса с 2.5 часов до 2.5 минут

Есть запрос на MySQL БД, который отрабатывает 25 часа, хотя сама итоговая таблица pc в left join отрабатывает за несколько секунд:

216