Frage

ich habe ein Problem. Grundsätzlich, wenn ein Benutzer einen Link ‚Bearbeiten‘ auf einer Seite klickt, wird die folgende jQuery-Code ausgeführt wird:

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

Dieses Dadurch wird die OnClick-Ereignis der Schaltfläche speichern ruft die saveQuestion() Methode und übergibt die ID der Frage, für die der Link ‚Bearbeiten‘ geklickt wurde.

Aber wenn in der gleichen Sitzung klickt der Benutzer bearbeitet auf 2 Fragen, dann statt den vorherigen click Ereignishandler zu überschreiben, es stattdessen verursacht 2 Event-Handler zu laufen, eine, die saveQuestion(1) nennen könnte und die anderen vielleicht saveQuestion(2) nennen. Diese 1 Frage Dadurch überschreibt die andere.

Gibt es eine Möglichkeit alle bisherigen click Ereignisse zu entfernen, die eine Taste zugewiesen wurden?

War es hilfreich?

Lösung

Sie würden verwenden off () ein Ereignis zu entfernen, etwa so:

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

, aber das wird entfernen alle Klick-Ereignisse an dieses Element gebunden. Wenn die Funktion mit SaveQuestion ist das einzige gebundene Ereignis dann die oben wird es tun. Wenn nicht wie folgt vor:

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

Andere Tipps

  

Gibt es eine Möglichkeit alle vorherigen Klick-Ereignisse zu entfernen, die eine Taste zugewiesen wurden?

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

Wenn Sie verwendet ...

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

... dann wird es einfacher sein, später zu lösen.

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

Mit jQuerys off und auf

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top