var item = $('li > a', $(MENU_ELEMENT));
item.focus(function(event){
$(this).siblings('ul').css('display', 'block');
$(this).parents('ul > li > ul').css('display', 'block');
});
item.blur(function(event){
$(this).siblings('ul').css('display', 'none');
$(this).parents('ul > li > ul').css('display', 'none');
});
По сути, MENU_ELEMENT будет выпадающим меню в стиле ul> li со следующей иерархией: <ul><li><a>Menu Item</a><ul><li><a>Sub Item 1</a></li>...</ul></li>....</ul>
На самом деле все довольно стандартно.Идея состоит в том, чтобы сделать меню доступным с помощью клавиши табуляции.Прекрасно работает в Chrome: когда дочерний элемент получает фокус, он обеспечивает отображение родителей и любых подменю.Когда ребенок теряет фокус, все исчезает.
В FF он ведет себя так, как если бы вы просто добавили селектор: focus в таблицу стилей CSS - элементы верхнего меню работают отлично, но как только вы это сделаетев меню они сворачиваются.
В IE это еще более странно - вы вкладываете меню, а когда вы снова нажимаете, вы возвращаетесь на предыдущую позицию.
Это не такЯ уверен, что это действительно проблема jQuery - просто то, как разные браузеры реализуют клавиши фокусировки, размытия и табуляции.Какое решение?
Редактировать Я должен указать, что если вы удалите весь обработчик размытия, все три браузера будут вести себя одинаково (все меню опускаются, и вы можете перемещаться по ним, но они просто не рушатся после того, как вы их выбили.)