error401
@error401

Сворачивание сабменю по клику вне элемента, как модернизировать скрипт?

Помогите пожалуйста улучшить скрипт сворачивания\разворачивания сабменю. В данный момент есть менюха, подпункты которой выпадают\сворачиваются при клике на главный(родительский)пункт меню. Т.е. свернуть\развернуть можно только кликнув на "Company".
5f6490539926c022323943.jpeg

Нужно сделать, что бы сабменю закрывалось ещё и при клике вне родительского пункта меню.

/*Скрипт выпадения пункта меню*/
$(document).ready(function(e){
      	$('.sub-menu').hide(); //изначально скрываем все открытые субменю
      	$('.drop-menu-item').click(function() { //при клике на ссылку меню (все ссылки в меню имеют этот класc) выполняем функцию
        $('.drop-menu-item').removeClass('active-item'); // что бы при повторном клике сворачивать развернутое меню
        $(this).toggleClass('active-item'); // изменяем стили активного элемента добавив класс
        if ($(this).attr('href') === '#' && $(this).parents('li.no-link').length) {
    	event.preventDefault();
  		}
        $('.sub-menu:visible').slideUp('normal'); //  закатывание открытого меню
        if (($(this).next().is("ul")) && (!$(this).next().is(":visible"))) {
        $(this).next().slideDown("normal"); //выкатывание кликнутого меню и закатывание остальных открытых
        }  

      });

  });
/*Скрипт выпадения пункта меню*/
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
@V0vash
jQuery(function($){
	$(document).mouseup(function (e){ // событие клика по веб-документу
		var div = $("#elem"); // тут указываем ID элемента
		if (!div.is(e.target) // если клик был не по нашему блоку
		    && div.has(e.target).length === 0) { // и не по его дочерним элементам
			div.hide(); // скрываем его
		}
	});
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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