it-swarm.com.de

So entfernen Sie alle Click-Ereignishandler in Jquery

Ich habe ein Problem. Wenn ein Benutzer auf einer Seite auf einen Link "Bearbeiten" klickt, wird im Allgemeinen der folgende JQuery-Code ausgeführt:

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

Auf diese Weise ruft das Ereignis onClick der Schaltfläche save die Methode saveQuestion() auf und gibt die ID der Frage weiter, für die der Link 'Edit' angeklickt wurde.

Wenn der Benutzer jedoch in derselben Sitzung bei 2 Fragen auf Bearbeiten klickt, werden statt des Überschreibens des vorherigen click -Ereignishandlers 2 Ereignishandler ausgeführt, von denen einer saveQuestion(1) und aufrufen kann der andere könnte saveQuestion(2) aufrufen. Auf diese Weise überschreibt eine Frage die andere.

Gibt es eine Möglichkeit, alle vorherigen click Ereignisse zu entfernen, die einer Schaltfläche zugewiesen wurden?

114
Click Upvote

Sie würden off () verwenden, um ein Ereignis wie folgt zu entfernen:

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

dies entfernt jedoch alle Klickereignisse, die an dieses Element gebunden sind. Wenn die Funktion mit SaveQuestion das einzige gebundene Ereignis ist, wird dies durch die oben genannten Schritte ausgeführt. Wenn nicht, machen Sie folgendes:

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

Gibt es eine Möglichkeit, alle vorherigen Klickereignisse zu entfernen, die einer Schaltfläche zugewiesen wurden?

$('#saveBtn').unbind('click').click(function(){saveQuestion(id)});
13
Rafael
$('#saveBtn').off('click').click(function(){saveQuestion(id)});
7
Fo Nko

Wenn Sie verwendet haben ...

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

... dann ist es später einfacher, die Bindung aufzuheben.

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

Verwenden Sie jquery's off und on

0
Ninjaneer