Есть код для закрытия меню по клику на документ:
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);
});