138 votes

Comment supprimer tous les gestionnaires d'événements Click dans Jquery

Je vais avoir un problème. En gros, quand un utilisateur clique sur un lien "Modifier" sur une page, la suite de Jquery code s'exécute:

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

Ce faisant, l'événement onClick du bouton enregistrer les appels de l' saveQuestion() méthode et transmet l'ID de la question pour laquelle le lien "Modifier" a été cliqué.

Mais si dans la même session de l'utilisateur clique sur modifier sur 2 questions, alors, au lieu d'écraser la précédente click gestionnaire d'événements, au lieu causes 2 gestionnaires d'événements à exécuter, qui pourrait appeler saveQuestion(1) et l'autre pourrait appeler saveQuestion(2). En faisant cela, 1 question écrase les autres.

Est-il un moyen de supprimer toutes les anciennes click événements qui ont été assignée à un bouton?

231voto

TStamper Points 17163

Vous utiliseriez off () pour supprimer un événement comme celui-ci:

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

mais cela supprimera tous les événements de clic liés à cet élément. Si la fonction avec SaveQuestion est le seul événement lié, les actions ci-dessus le feront. Si ce n'est pas le cas:

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

15voto

Rafael Points 9065

Existe-t-il un moyen de supprimer tous les événements de clic précédents attribués à un bouton?

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

11voto

Fo Nko Points 161
$('#saveBtn').off('click').click(function(){saveQuestion(id)});

2voto

Jarrett Meyer Points 11147

Si vous avez utilisé ...

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

... alors il sera plus facile de dissocier plus tard.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X