@hujak_hujak

Как проверить «дочерность» кликнутого элемента?

$('body').click(function (e)
 //Слушаю клик на всей странице {
  if((parseInt(mNav.css('left')) === 0)){ 
//Проверяю видно ли меню (если 0, то оно видно. mNav - это обертка менюшки)
      if ((e.target !== $('.mobile-nav')[0]) && (e.target !== $('.mobile-nav')[0].children('.mobile-nav')))
{ // Сначала проверяю: кликнутый элемент - это не меню? Затем проверяю: кликнутый элемент - это не дочерние элементы меню?
          hideNav(); //Если клик не по меню или по его дочерним элементам, то скрываю меню
      }
  }
});


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

Код выше получается каким то дебильным, и при этом не рабочим, но ничего больше я придумать не могу.

Подскажите, как это правильно реализовать
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 2
MalkovVladimir73
@MalkovVladimir73
Fullstack (node + vue.js)
создай overlay, повесь на него ивентхендлер, меню сделай "выше", используя z-index.
Ответ написан
KazeZlat
@KazeZlat
Погромист-затейник
Ход мыслей у вас правильный, но вот условие сокрытия вы написали не так. Например, вы пытаетесь вызвать .children(selector) у DOM-объекта, а не jQuery-объекта.

У вас уже используется jQuery, так почему бы не использовать его методы?

// Если меню не является e.target и e.target не находится внутри меню
if (!$('.mobile-nav').is(e.target) && !$('.mobile-nav').find(e.target).length) {
    hideNav();
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
20 окт. 2020, в 19:12
3000 руб./за проект
20 окт. 2020, в 18:16
4000 руб./за проект
20 окт. 2020, в 18:07
5000 руб./за проект