Cómo eliminar todos los controladores de eventos Click en Jquery
-
05-07-2019 - |
Pregunta
Estoy teniendo un problema. Básicamente, cuando un usuario hace clic en un enlace 'Editar' en una página, se ejecuta el siguiente código Jquery:
$("#saveBtn").click(function () {
saveQuestion(id);
});
Al hacer esto, el evento onClick del botón guardar llama al método saveQuestion ()
y transmite el ID de la pregunta para la que se hizo clic en el enlace "Editar".
Pero si en la misma sesión el usuario hace clic en editar en 2 preguntas, entonces en lugar de sobrescribir el controlador de eventos anterior clic
, en su lugar, se ejecutan 2 controladores de eventos, uno que podría llamar saveQuestion (1)
y el otro puede llamar saveQuestion (2)
. Al hacer esto, 1 pregunta sobrescribe la otra.
¿Hay alguna forma de eliminar todos los eventos click
anteriores que se hayan asignado a un botón?
Solución
Deberías usar off () para eliminar un evento de esta forma:
$("#saveBtn").off("click");
pero esto eliminará todos los eventos de clic vinculados a este elemento. Si la función con SaveQuestion es el único evento vinculado, lo anterior lo hará. Si no, haz lo siguiente:
$("#saveBtn").off("click").click(function() { saveQuestion(id); });
Otros consejos
¿Hay alguna forma de eliminar todos los eventos de clic anteriores que se han asignado a un botón?
$('#saveBtn').unbind('click').click(function(){saveQuestion(id)});
$('#saveBtn').off('click').click(function(){saveQuestion(id)});
Si usaste ...
$(function(){
function myFunc() {
// ... do something ...
};
$('#saveBtn').click(myFunc);
});
... entonces será más fácil desenlazar más tarde.