Question

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

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

Ce faisant, 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énement cliquez sur précédent, il provoque l'exécution de deux gestionnaires d'événement, l'un pouvant appeler . saveQuestion (1) et l’autre peut appeler saveQuestion (2) . En faisant cela, 1 question écrase l’autre.

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

Était-ce utile?

La solution

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. Sinon, procédez comme suit:

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

Autres conseils

  

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

Si vous avez utilisé ...

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

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

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

Utilisez les off et on

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top