jQuery “unbind” volta para “ligar” não está funcionando

Quando eu clico em um elemento, eu gostaria de desvincular os events “mouseenter” e “mouseleave”, o que funciona bem, mas eu gostaria de ligá-los novamente se outro elemento for clicado – isso não funciona.

qualquer ajuda?

aqui está o código:

 $(document).ready(function(){ $("#shape1 img").click(function(){ $("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").unbind('mouseenter mouseleave'); }); $("#close").click(function(){ $("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").bind('mouseenter mouseleave'); }); });  

Muito Obrigado!

A function .bind() espera que você passe uma function para ser executada quando esses events forem acionados.

 $("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").bind('mouseenter mouseleave', function(event) { // do something here when the mouseenter or mouseleave events are triggered }); 

Quando você chama .unbind() o manipulador de events é removido completamente e o jQuery não se lembra do que foi. Você não pode simplesmente chamar .bind() para desfazer isso e saber que código deve executar em resposta a esses events.

Além disso, dependendo da versão do jQuery (1.7+), você deve usar as funções .off() e .off() para adicionar e remover manipuladores de events.

bind só ligará manipuladores de events para itens atualmente existentes.

da documentação Bind ()

Os manipuladores são anexados aos elementos atualmente selecionados no object jQuery, portanto, esses elementos devem existir no momento em que a chamada para .bind () ocorre

use o método On.

 $("#shape1 img").click(function(){ $("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").off('mouseenter'); }); $("#close").click(function(){ $("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").on('mouseenter',myFunction1); $("#shape1 img,#shape2 img, #shape3 img, #shape4 img, #shape5 img").on('mouseleave',myFunction2); }); 

Porque você precisa atribuir os retornos de chamada para serem executados quando os events ocorrerem.

Experimentar :