У меня есть элемент ул. со многими объектами лития:
...
когда пользователь нависает их мышь над элементом лития, я хотел бы, показывают некоторые скрытые кнопки на литии, когда они прекращают колебаться, скрывают кнопки снова. Попытка использовать делегата:
$("#myList").delegate("li", "hover", function () {
if (iAmHovered()) {
showButtons();
} else {
hideButtons();
}
});
вышеупомянутое требуется и парение и 'непарение'. Как я могу различать, если это - отпуск, или войдите хотя?
Кроме того, я получил этот образец от этого вопроса: .delegate, эквивалентный из существующего .hover метода в jQuery 1.4.2
в котором говорит Nick:
Это зависит от [#myList], не заменяемого через Ajax или иначе хотя, так как это - то, где обработчик событий живет.
Я действительно заменяю содержание #myList хотя, с помощью:
$("#myList").empty();
это вызовет проблему?
Спасибо
Вам нужно проверить тип события, например, так:
$("#myList").delegate("li", "hover", function ( event ) {
if (event.type == 'mouseover') {
showButtons();
} else {
hideButtons();
}
});
Поскольку есть только один обработчик для обоих событий, мы проверяем, какое из них произошло, и выполняем соответствующий код.
В отличие от привязки hover
непосредственно к элементу, где он может принять два обработчика для двух типов событий.
EDIT: Обратите внимание, что начиная с jQuery 1.4.3
, тип события, о котором сообщается при использовании 'hover'
с .delegate()
или .live()
больше не является mouseover/mouseout
(как должно быть). Теперь это будет mouseenter/mouseleave
, что выглядит глупо, поскольку это непузырьковые события.
Таким образом, оператор if()
будет выглядеть так:
if (event.type == 'mouseenter') {
//...
Вы можете объявить функцию-обработчик так, чтобы она обращала внимание на аргумент события, а затем проверить его тип.