2010-07-29 3 views
12

У меня есть уль элемент с многими элементами Li:Использование делегата() с hover()?

<ul> 
    <li></li> 
    ... 
</ul> 

, когда пользователь наводит курсор мыши над элементом LI, я хотел бы показать некоторые скрытые кнопки на литии, когда они перестают зависания, скрыть кнопки еще раз. Попытка использования делегата:

$("#myList").delegate("li", "hover", function() { 
    if (iAmHovered()) { 
     showButtons(); 
    } else { 
     hideButtons(); 
    } 
}); 

Приведенное выше вызывается как для зависания, так и для «un-hover». Как я могу отличить, если это отпуск или вход?

Кроме того, я получил этот пример из этого вопроса: .delegate equivalent of an existing .hover method in jQuery 1.4.2

, в котором Ник говорит:

Это зависит от [#myList] не получает заменить через AJAX или иначе, хотя, так что там обработчик события живет.

я заменить содержимое #myList хотя, используя:

$("#myList").empty(); 

воли, которые вызывают проблемы?

Благодаря

ответ

19

Вам необходимо проверить для типа события, например:

$("#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') { 
    //... 
+0

Классные спасибо, что работает. – user246114

0

Вы можете объявить функцию обработчика, так что он обращает внимание на аргумент события, а затем проверьте тип.

Смежные вопросы