Event-Handling jQuery unclick () und unbind () Ereignisse?
-
02-07-2019 - |
Frage
Ich mag ein Click-Ereignis auf ein Knopfelement befestigen und sie dann später entfernen, aber ich kann nicht unclick get () oder unbind () Veranstaltung (en) wie erwartet zu funktionieren. Im folgenden Code ist die Schaltfläche ‚tan‘ Farbe und das Click-Ereignis funktioniert.
window.onload = init;
function init() {
$("#startButton").css('background-color', 'beige').click(process_click);
$("#startButton").css('background-color', 'tan').unclick();
}
Wie kann ich entfernen Ereignisse aus meinen Elementen?
Lösung
Es gibt nicht so etwas wie unclick()
. Wo hast du das her?
Sie können entfernen einzelne Event-Handler von einem Elemente durch den Aufruf unbind:
$("#startButton").unbind("click", process_click);
Wenn Sie alle Handler entfernen möchten, oder Sie haben eine anonyme Funktion als Handler, können Sie das zweite Argument weglassen unbind()
:
$("#startButton").unbind("click");
Andere Tipps
Oder man könnte eine Situation, wo Sie die Klick-Funktion entbinden wollen einfach nur, nachdem Sie es verwenden, wie ich musste:
$('#selector').click(function(event){
alert(1);
$(this).unbind(event);
});
unbind ist dein Freund.
$("#startButton").unbind('click')
Sind Sie sicher, dass Sie es lösen wollen? Was passiert, wenn später Sie wollen es wieder binden und wieder und wieder? Ich mag es nicht dynamischen Event-Handling bind / entbinden, da sie aus der Hand zu bekommen neigen, wenn sie von verschiedenen Stellen des Codes genannt.
Sie möchten können alternative Optionen prüfen:
- ändern Sie die Schaltfläche "disabled" Eigenschaft
- implementieren Ihre Logik in "process_click" Funktion
Just my 2 cents, nicht eine universelle Lösung.