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?

¿Fue útil?

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.

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

Use off y on

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top