Используя делегата () с парением ()?

У меня есть элемент ул. со многими объектами лития:

  • ...

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

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

вышеупомянутое требуется и парение и 'непарение'. Как я могу различать, если это - отпуск, или войдите хотя?

Кроме того, я получил этот образец от этого вопроса: .delegate, эквивалентный из существующего .hover метода в jQuery 1.4.2

в котором говорит Nick:

Это зависит от [#myList], не заменяемого через Ajax или иначе хотя, так как это - то, где обработчик событий живет.

Я действительно заменяю содержание #myList хотя, с помощью:

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

это вызовет проблему?

Спасибо

12
задан Community 23 May 2017 в 11:53
поделиться

2 ответа

Вам нужно проверить тип события, например, так:

$("#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') {
    //...
19
ответ дан 2 December 2019 в 18:51
поделиться

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

0
ответ дан 2 December 2019 в 18:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: