@SergeiB

Как правильно написать условие?

Есть код для закрытия меню по клику на документ:
if (!$(e.target).closest($nav).length) { ... }
Пытаюсь добавить условие закрытия меню при нажатии ESCAPE, но код отрабатывает некорректно:
if (!$(e.target).closest($nav).length || e.keyCode === 27) { ... }

Я так понял, это происходит из-за того, что keyboard-события также имеют свойство target. Им является элемент, который в момент нажатия находится под фокусом, или body, если такого элемента нет.
Какое условие писать в таком случае или единственный вариант - обрабатывать события раздельно?
Вот весь код (меню использует Bootstrap Collapse)
var closeNavbar = function(e) {
    var $nav = $('.navbar-collapse');
    if (!$(e.target).closest($nav).length || e.keyCode === 27) {
      $nav.collapse('hide');
      $(document).off('click keydown', closeNavbar);
    }
  };

  $('#navbar').on('shown.bs.collapse', function() {
    $(document).on('click keydown', closeNavbar);
  });

  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
Robur
@Robur
Знаю больше чем это необходимо
Добавьте проверку по event.type например. Если это мышка то первое условие, если клавиатура, то второе.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@McBernar
Как вы вешаете на один ивент клавиатуру и мышь?
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы