Похоже на этот вопрос , но продвигается дальше. Я хотел бы обнаружить клики за пределами набора элементов, который обрабатывается следующим образом:
$('#menu div').live('click', function() {
// Close other open menu items, if any.
// Toggle the clicked menu item.
$('body').one('click', function(event) {
// Hide the menu item.
event.stopPropagation();
});
});
Это работает как брелок, к сожалению, когда открыт другой пункт меню и
Нажатие второго, требуется два щелчка, чтобы открыть второй элемент. Первый
нажатие скрывает первый элемент меню, который был открыт, второй показывает второе меню
пункт.
«Правильное» поведение работает следующим образом:
- Щелчок по пункту меню открывает его.
- Щелчок по тому же пункту меню (или его дочерним элементам) закрывает его.
- При нажатии другого пункта меню закрывается первый, открывается второй.
- Нажатие (открыть) пунктов меню закрывает их.
Я попробовал следующее вместо вышеуказанного $('body').one()
, чтобы игнорировать щелчки по пунктам меню с небольшим успехом:
// Captures click on menu items in spite of the not.
$('*').not('#menu *').one('click', function() { // Hide menu }
$('*:not(#menu)').one('click', function() { // Hide menu }
Как всегда, спасибо за любую помощь!