jQuery, объединяющий HOVER и FOCUS вместе (мышь и клавиатура) - PullRequest
2 голосов
/ 13 января 2010

Я создаю мегаменю, в котором я хочу, чтобы меню можно было вызывать как при наведении курсора (с помощью мыши), так и при фокусировке (например, на вкладку с помощью клавиатуры).

Вот что я сейчас делаю:

$(".megaMenu-trigger").focus(function (){$(this).hover()});
$(".megaMenu-trigger").hover(function(){
    // do the stuff
});

Это работает, но мне интересно, если это идеальный способ обрабатывать взаимодействия клавиатуры и мыши вместе.

Ответы [ 2 ]

10 голосов
/ 13 января 2010

вы можете использовать метод bind для привязки нескольких событий к одному действию, т.е.

$('.megaMenu-trigger').bind("mouseenter focus mouseleave", 
        function(event) { console.log(event.type); }); 
0 голосов
/ 13 января 2010

Ответом на вашу проблему является решение о дизайне пользовательского интерфейса.

  • Должно ли указание мыши или табуляции всегда иметь приоритет над другим?
  • Или это должно быть связано со временем, когда самое последнее даже имеет приоритет?
  • В противном случае можно сохранить меню открытым и отключить другие события, пока оно не будет закрыто.

То, как работает моя Mac OS, - последнее событие. Возможно, некоторые веб-дизайнеры решили пойти другим путем?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...