Как мне отменить привязку зависания в jQuery?
Это не работает:
$(this).unbind('hover');
javascript
jquery
zsharp
источник
источник
Ответы:
$(this).unbind('mouseenter').unbind('mouseleave')
или более лаконично (спасибо @Chad Grant ):
$(this).unbind('mouseenter mouseleave')
источник
На самом деле, документация jQuery имеет более простой подход, чем приведенные выше примеры цепочки (хотя они будут работать нормально):
Начиная с jQuery 1.7, вы также можете использовать
$.on()
и$.off()
для привязки событий, поэтому для отмены привязки события зависания вы должны использовать более простой и аккуратный вариант:Имя псевдо-события «hover» используется как сокращение для «mouseenter mouseleave», но в более ранних версиях jQuery обрабатывалось иначе; требуя, чтобы вы явно удалили каждое из буквальных имен событий. Использование
$.off()
now позволяет отбрасывать оба события мыши с использованием одного и того же сокращения.Изменить 2016:
По-прежнему популярный вопрос, поэтому стоит обратить внимание на то, что @ Dennis98 в комментариях ниже, что в jQuery 1.9+ событие "hover" устарело в пользу стандартных вызовов "mouseenter mouseleave". Итак, ваше объявление привязки события теперь должно выглядеть так:
$('#myElement').off('mouseenter mouseleave');
источник
$.off("hover")
он не работает. Однако использование обоих событий отлично работает.$.off()
все еще существует, это рекомендуемый метод отвязывания событий в настоящее время. Итак, сейчас вам нужно писать$(element).off("mouseenter mouseleave");
.Отвязать
mouseenter
иmouseleave
события по отдельности или разрывания всех событий элемента (ов).или
источник
unbind () не работает с жестко запрограммированными встроенными событиями.
Так, например, если вы хотите отменить привязку события наведения курсора мыши
<div id="some_div" onmouseover="do_something();">
, я обнаружил, что$('#some_div').attr('onmouseover','')
это быстрый и грязный способ добиться этого.источник
Другое решение - .die () для событий, которые связаны с .live () .
Например:
Здесь вы можете найти хорошую ссылку: Изучение jQuery .live () и .die ()
(Извините за мой английский: ">)
источник
Все, что делается при наведении курсора, привязано к свойству mouseover и mouseout. Я бы привязал и отвязал ваши функции от этих событий индивидуально.
Например, допустим, у вас есть следующий HTML-код:
тогда ваш jQuery будет:
источник
Вы можете удалить определенный обработчик событий, который был прикреплен
on
, используяoff
Используя это, вы удалите только handlerFunction
Еще одна хорошая практика - установить nameSpace для нескольких прикрепленных событий.
источник
Я обнаружил, что это работает как второй аргумент (функция) для .hover ()
Первая функция (аргумент для .hover ()) - наведение курсора мыши и выполнит ваш код. Второй аргумент - mouseout, который отвяжет событие наведения от #yourId. Ваш код будет выполнен только один раз.
источник
$.unbind()
само по себе не удалит все события из этого объекта? В таком случае такие вещи, как ваши$.click()
мероприятия, теперь потерпят неудачу, верно?