Domanda

Sto riscontrando un problema. Fondamentalmente, quando un utente fa clic su un link "Modifica" su una pagina, viene eseguito il seguente codice Jquery:

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

In questo modo, l'evento onClick del pulsante Salva chiama il metodo saveQuestion () e passa l'ID della domanda per la quale è stato fatto clic sul collegamento "Modifica".

Ma se nella stessa sessione l'utente fa clic su Modifica su 2 domande, quindi invece di sovrascrivere il precedente gestore di eventi clic , provoca invece l'esecuzione di 2 gestori di eventi, uno che potrebbe chiamare saveQuestion (1) e l'altro potrebbe chiamare saveQuestion (2) . In questo modo 1 domanda sovrascrive l'altra.

Esiste un modo per rimuovere tutti gli eventi click precedenti che sono stati assegnati a un pulsante?

È stato utile?

Soluzione

Dovresti utilizzare off () per rimuovere un evento in questo modo:

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

ma questo rimuoverà tutti gli eventi clic associati a questo elemento. Se la funzione con SaveQuestion è l'unico evento associato, lo farà sopra. In caso contrario, procedi come segue:

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

Altri suggerimenti

  

Esiste un modo per rimuovere tutti gli eventi di clic precedenti assegnati a un pulsante?

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

Se hai usato ...

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

... quindi sarà più semplice staccare più tardi.

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

Usa off e on

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top