Я застрял на выяснении логики, чтобы сделать доступную клавиатуру с раскрывающимся меню.jQuery выясняет, потерял ли родитель «фокус»
HTML, структурирована таким (названия экстра-класса, используемых для ясности):
<ul>
<li class="primaryMenuItem">
<a href="">Link 1</a>
<ul class="popUpMenu">
<li><a href="">Sub Link 1</a></li>
<li><a href="">Sub Link 2</a></li>
</ul>
</li>
<li class="primaryMenuItem">
<a href="">Link 2</a>
<ul class="popUpMenu">
<li><a href="">Sub Link 1</a></li>
<li><a href="">Sub Link 2</a></li>
</ul>
</li>
</ul>
Ссылка 1 и Ссылка 2, когда колебались, покажет список подменю (выпадающее меню). У меня это работает отлично с некоторыми jQuery и плагином jQuery hoverIntent.
Уловка заключается в том, что это только работает с мышью в данный момент.
Следующая задача - заставить это работать с клавиатуры.
я могу легко добавить событие фокусировки верхних звеньев уровня, которые затем вызывают вторичное меню:
$('ul.primaryMenuItem a:first').focus([call showMenu function])
Это работает отлично.
Чтобы закрыть меню, при открытии другого меню выберите один из вариантов, чтобы проверить, есть ли еще один открытый и, если да, закройте его.
Это также хорошо работает.
Если это не удается, это если вы открыли последнее меню и вышли из него. Поскольку вы не вошли в другое меню, он остается открытым.
Задача состоит в том, чтобы выяснить, как и когда нужно закрыть меню и необходимую логику (jQuery), чтобы понять это. В идеале я бы закрыл меню, когда основное внимание уделяется элементу на странице OTHER, чем любые дочерние элементы меню.
Логически, я ищу это:
$('li.primaryMenuItem').blur([close $(this).find('ul.popUpMenu'))
Однако, вы не можете сделать это, так как LI фактически не имеет фокуса, а якорь тег внутри него.
Любые предложения?
UPDATE:
, возможно, лучше/простой способ задать вопрос:
Via JQuery, есть способ «часы», чтобы увидеть, если фокус перемещается за пределы всех детей определенного объекта ?
Есть опечатка? '$ ('ul.primaryMenuItem a: first'). focus ([call showMenu function])' -> '$ ('li.primaryMenuItem a: first'). focus ...' – superjos