web-dev-qa-db-fra.com

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

J'ai un problème. Fondamentalement, lorsqu'un utilisateur clique sur un lien "Modifier" sur une page, le code Jquery suivant est exécuté:

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

En faisant cela, l'événement onClick du bouton de sauvegarde appelle la méthode saveQuestion() et transmet l'ID de la question pour laquelle le lien "Modifier" a été cliqué.

Mais si, dans la même session, l'utilisateur clique sur modifier deux questions, au lieu de remplacer le gestionnaire d'événements précédent click, il provoque l'exécution de deux gestionnaires d'événements, l'un pouvant appeler saveQuestion(1) et l'autre pourrait appeler saveQuestion(2). En faisant cela, une question écrase l’autre.

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

114
Click Upvote

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); });
194
TStamper

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)});
13
Rafael
$('#saveBtn').off('click').click(function(){saveQuestion(id)});
7
Fo Nko

Si vous avez utilisé ...

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

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

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

Utilisez jquery off et on

0
Ninjaneer