JQuery сочетает в себе фокус и зависание - PullRequest
3 голосов
/ 11 марта 2011

Я пытаюсь использовать событие фокуса на элементе списка. это работает с зависанием, но не с фокусом! У вас есть идея?

$('#main-menu ul.rubriques li')
.hover(function() {
$(this).addClass('active').find('ul').show();                    
})
.focus(function() {
$(this).addClass('active').find('ul').show();                    
});

Я пытаюсь изменить свой код: и найти решение;););)

  $('#main-menu ul.rubriques li a')
.hover(function() { $(this).parent().addClass('active').find('ul').show();                   
})
.focus(function() { $(this).parent().addClass('active').find('ul').show();                   
});

спасибо! все!

Ответы [ 6 ]

3 голосов
/ 11 марта 2011

Фокус для <input/> элементов и <a/> ссылок ...

2 голосов
/ 11 марта 2011

Вы также можете связать оба события одновременно:

$('#main-menu ul.rubriques li').bind('hover focus', function() {
    $(this).addClass('active').find('ul').show();                    
});

Но, как говорит Мичелготта, фокус вряд ли будет работать на ли, за исключением некоторых обстоятельств - http://api.jquery.com/focus/

2 голосов
/ 11 марта 2011

Только inputs, textareas и anchors могут получить фокус.

Кроме того, вам не хватает ) после hover() части

$('#main-menu ul.rubriques li').hover(function() {
    $(this).addClass('active').find('ul').show();                    
}).focus(function() {
    $(this).addClass('active').find('ul').show();                    
});

Обновление - как указано @ vittore , li могут получить фокус, если вы назначите tab-index

0 голосов
/ 11 марта 2011

Я пытаюсь изменить свой код: и найти решение;););)

  $('#main-menu ul.rubriques li a')
.hover(function() { $(this).parent().addClass('active').find('ul').show();                   
})
.focus(function() { $(this).parent().addClass('active').find('ul').show();                   
});

спасибо!все!

0 голосов
/ 11 марта 2011

Фокус - это функция, которую вы используете только для элементов формы, например, для поля ввода, если я правильно помню.

http://api.jquery.com/focus/

Что вы пытаетесь сделать?

Если вы хотите что-то сделать с использованием элемента li;

$('#main-menu ul.rubriques li').hover(function() {
  $(this).addClass('active').find('ul').show().css({'border':'1px solid #ff2200','background-color':'#ffcc00'});
});

Вы можете изменить цвета на любой, какой захотите.Это ваша лучшая альтернатива.

0 голосов
/ 11 марта 2011

вам нужно изменить способ, которым вы назначаете обработчик, как предполагал Джефф, также вам нужно будет явно установить атрибут tab-index для элементов списка, чтобы позволить им запускать событие фокуса

...