Como faço para desvincular "hover" no jQuery?
Isso não funciona:
$(this).unbind('hover');
javascript
jquery
zsharp
fonte
fonte
Respostas:
$(this).unbind('mouseenter').unbind('mouseleave')
ou mais sucintamente (obrigado @Chad Grant ):
$(this).unbind('mouseenter mouseleave')
fonte
Na verdade, a documentação do jQuery tem uma abordagem mais simples do que os exemplos encadeados mostrados acima (embora eles funcionem bem):
A partir do jQuery 1.7, você também pode usar
$.on()
e$.off()
para associação de evento, portanto, para desvincular o evento hover, você usaria o mais simples e mais organizado:O pseudo-event-name "hover" é usado como uma abreviação para "mouseenter mouseleave", mas era tratado de forma diferente nas versões anteriores do jQuery; exigindo que você remova expressamente cada um dos nomes de eventos literais. Usar
$.off()
agora permite que você solte ambos os eventos do mouse usando a mesma abreviação.Editar 2016:
Ainda é uma pergunta popular, então vale a pena chamar a atenção para o ponto de @ Dennis98 nos comentários abaixo de que no jQuery 1.9+, o evento "hover" foi descontinuado em favor das chamadas "mouseenter mouseleave" padrão. Portanto, sua declaração de associação de evento agora deve ter a seguinte aparência:
$('#myElement').off('mouseenter mouseleave');
fonte
$.off("hover")
não funciona. No entanto, usar os dois eventos funciona muito bem.$.off()
ainda está lá, é o método recomendado para desvincular eventos atualmente. Portanto, a partir de agora, você precisa escrever$(element).off("mouseenter mouseleave");
.Desvincule os eventos
mouseenter
emouseleave
individualmente ou desvincule todos os eventos no (s) elemento (s).ou
fonte
unbind () não funciona com eventos embutidos codificados.
Então, por exemplo, se você quiser desvincular o evento mouseover
<div id="some_div" onmouseover="do_something();">
, descobri que$('#some_div').attr('onmouseover','')
é uma maneira rápida e suja de fazer isso.fonte
Outra solução é .die () para eventos vinculados a .live () .
Ex.:
Você pode encontrar uma boa referência aqui: Explorando jQuery .live () e .die ()
(Desculpe pelo meu inglês: ">)
fonte
Tudo o que o hover está fazendo nos bastidores é vinculado às propriedades mouseover e mouseout. Gostaria de vincular e desvincular suas funções desses eventos individualmente.
Por exemplo, digamos que você tenha o seguinte html:
então seu jQuery seria:
fonte
Você pode remover um manipulador de eventos específico que foi anexado
on
usandooff
Usando isso, você removerá apenas handlerFunction
Outra boa prática é definir um nameSpace para vários eventos anexados
fonte
Descobri que isso funciona como um segundo argumento (função) para .hover ()
A primeira função (argumento para .hover ()) é mouseover e executará seu código. O segundo argumento é mouseout, que desvinculará o evento hover de #yourId. Seu código será executado apenas uma vez.
fonte
$.unbind()
Por si só, não removeria todos os eventos desse objeto? Nesse caso, coisas como seus$.click()
eventos falhariam agora, certo?