Eu não consigo desvincular o uso do evento.
Eu estava tentando ligar click
evento, em seguida, ligar mouseleave
evento e callback desvincular click
, mas não está funcionando.
el
é dom criar e anexar por script que é por isso que eu uso document.on... el
então eu tentei abaixo incluir código comentado para teste não funcionando também .... eu sinto falta de entender alguma coisa?
jquery-1.11.1.min.js
https://jsfiddle.net/70t6jtns/
var el = $("div")
$(document).on("click", el, function() {
console.log("oncli")
});
//$(document).on("mouseleave", el, function() {
//$(document).off("click", el, function() {
//console.log("offcli")
//});
//$(document).off("click", el);
el.off("click");
//});
Respostas:
4 para resposta № 1Primeiro, on
não aceita objetos jQuery como o segundo argumento, então $(document).on("click", el, function() {...
não faz sentido.
A questão principal é que você está usando a delegação de eventos em um caso, mas esperando um manipulador conectado diretamente no outro caso. click
manipulador para document
, mas depois tentando desanexar de um elemento específico (el
). Você tem que removê-lo da mesma coisa que você anexou.
Se você deseja anexar o manipulador a el
e separar depois, use el
consistentemente como o alvo:
el.on("click", function() { ...
então
el.off("click");
Se o manipulador tiver que ser delegado, você vai querer ter certeza, novamente, de que está removendo a mesma coisa que está adicionando. Então, por exemplo,
$(document).on("click", "selector-for-the-element", function() { ...
então
$(document).off("click", "selector-for-the-element");