Wie man alle Click-Ereignishandler in JQuery entfernen
-
05-07-2019 - |
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?
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.