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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top