manipulação de eventos UNBIND () jQuery desmarque () e evento?
-
02-07-2019 - |
Pergunta
Eu quero anexar um evento de clique a um elemento botão e depois removê-lo, mas eu não posso começar desmarque () ou unbind evento () (s) a funcionar como esperado. No código abaixo, o botão é obras de eventos cor 'tan' e o clique.
window.onload = init;
function init() {
$("#startButton").css('background-color', 'beige').click(process_click);
$("#startButton").css('background-color', 'tan').unclick();
}
Como posso remover eventos dos meus elementos?
Solução
Não há tal coisa como unclick()
. Onde você conseguiu isso?
Você pode remover manipuladores de eventos individuais de um elemento chamando unbind:
$("#startButton").unbind("click", process_click);
Se você quiser remover todos os manipuladores ou você usou uma função anônima como um manipulador, você pode omitir o segundo argumento para unbind()
:
$("#startButton").unbind("click");
Outras dicas
Ou você pode ter uma situação onde você quer desvincular a função de clique imediatamente depois de usá-lo, como eu tive que:
$('#selector').click(function(event){
alert(1);
$(this).unbind(event);
});
unbind é seu amigo.
$("#startButton").unbind('click')
Você tem certeza que quer desvincular-lo? E se mais tarde você deseja ligar de novo, e de novo, e de novo? Eu não gosto dinâmica bind / unbind, uma vez que eles tendem a sair da mão, quando chamado a partir de diferentes pontos de seu código de manipulação de eventos.
Você pode querer considerar opções alternativas:
- mudar o botão "deficiente" propriedade
- implementar seu interior lógica "process_click" função
Apenas meus 2 centavos, não é uma solução universal.