Pergunta

Eu estou tendo um problema. Basicamente, quando um usuário clica em link de um 'Editar' em uma página, as seguintes Jquery código é executado:

$("#saveBtn").click(function () {
    saveQuestion(id);
});

Ao fazer isso, o evento onClick do botão Salvar chama o método saveQuestion() e passa sobre o ID da questão para a qual o link 'Editar' foi clicado.

Mas, se na mesma sessão o usuário clica editar em 2 perguntas, então em vez de substituir o manipulador de eventos click anterior, em vez provoca 2 manipuladores de eventos para executar, uma que poderia chamar saveQuestion(1) eo outro saveQuestion(2) chamada força. Ao fazer isso uma questão substitui a outra.

Existe uma maneira de remover todos os eventos click anteriores que foram atribuídos a um botão?

Foi útil?

Solução

Você usaria off () para remover um evento assim:

$("#saveBtn").off("click");

mas isso irá remover todos os eventos de clique vinculado a este elemento. Se a função com SaveQuestion é o único evento ligado, o texto acima irá fazê-lo. Se não faça o seguinte:

$("#saveBtn").off("click").click(function() { saveQuestion(id); });

Outras dicas

Existe uma maneira de remover todos os eventos de clique anteriores que foram atribuídos a um botão?

$('#saveBtn').unbind('click').click(function(){saveQuestion(id)});
$('#saveBtn').off('click').click(function(){saveQuestion(id)});

Se você usou ...

$(function(){
    function myFunc() {
        // ... do something ...
    };
    $('#saveBtn').click(myFunc);
});

... então será mais fácil depois unbind.

$('#saveBtn').off('click').on('click',function(){
   saveQuestion(id)
});

Use jquery do off e on

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