Ich habe eine Ajax-App, die Funktionen bei jeder Interaktion ausführen wird. Ich möchte meine Setup-Funktion jedes Mal ausführen können, damit der gesamte Setup-Code für diese Funktion gekapselt bleibt. Das mehrmalige Binden von Elementen bedeutet jedoch, dass der Handler mehr als einmal ausgeführt wird, was offensichtlich unerwünscht ist. Gibt es eine elegante Möglichkeit in jQuery, ein Element mehrfach zu binden, ohne dass der Handler mehr als einmal aufgerufen wird?Gibt es in jQuery eine Möglichkeit, einen Klick nur einmal zu binden?
Antwort
Sie könnten das Ereignis document
mit der one()
Funktion anhängen:
$(document).one('click', function(e) {
// initialization here
});
Einmal ausgeführt, dieser Event-Handler wieder entfernt, so dass es wieder nicht laufen wird. Wenn Sie jedoch die Initialisierung benötigen, um vor das Click-Ereignis eines anderen Elements auszuführen, müssen wir uns etwas anderes überlegen. Die Verwendung von mousedown
anstelle von click
funktioniert dann möglicherweise, da das mousedown-Ereignis vor dem click-Ereignis ausgelöst wird.
Benutzer jQuery one
Funktion wie Tom sagte, aber den Handler jedes Mal vor der Bindung wieder zu lösen. Es hilft, den Event-Handler einer Variablen zuzuweisen, anstatt eine anonyme Funktion zu verwenden.
var handler = function(e) { // stuff };
$('#element').unbind('click', handler).one('click', handler);
//elsewhere
$('#element').unbind('click', handler).one('click', handler);
Sie können auch .unbind('click')
tun alle Klick-Handler auf ein Element angebracht zu entfernen.
Die Antwort von Chetan Sastry ist, was Sie wollen. Im Grunde rufen Sie einfach ein $ (Element) .unbind (Ereignis); vor jedem Ereignis.
Also, wenn Sie eine Funktion wie loadAllButtonClicks() aufweisen, die enthält alle
$(element).on("click", function(){});
Methoden für jede Taste auf Ihrer Seite, und Sie laufen, dass jedes Mal, wenn eine Taste angeklickt wird, das offensichtlich mehr produzieren als Ein Ereignis für jede Schaltfläche. Um dies zu lösen fügen Sie einfach
$(element).unbind(event);
vor jedem
$(element).on("click", function(){});
und es wird für alle Veranstaltungen an diesem Element lösen, dann die ein Klick-Ereignis.
Sie können auch .off() verwenden, wenn die Freigabe nicht funktioniert. Stellen Sie sicher, dass die Wähler und Ereignis gegeben .off genau mit denen übereinstimmen, zunächst vorgesehen .on():
$("div.selector").off("click", "a.another_selector");
$("div.selector").on("click", "a.another_selector", function(e){
Dies ist, was für mich gearbeitet, um die gleiche Ajax bei der Lösung Nachladen Problem.
Ich mag das, weil das $ (element) .unbind (event); Lösung würde alle Ereignisse des Typs (z. B. Klick) aus dem Element entfernen, während diese Methode nur die mit dem betreffenden Selektor verbundene Methode entfernt und andere anfügt, selbst wenn sie denselben Ereignistyp verwenden. –
- 1. Gibt es eine Möglichkeit, eine Eigenschaft nur einmal in C#
- 2. Jquery: Anfügen div nur einmal 'bei Klick'
- 3. jquery Auslöser (‚Klick‘) funktionieren nur einmal
- 4. jQuery Klick funtion führt nur einmal
- 5. Gibt es eine Möglichkeit, an Keyboard.FocusedElement zu binden?
- 6. Gibt es eine Möglichkeit zu garantieren, dass eine Ameisenabhängigkeit nur einmal ausgeführt wird?
- 7. Gibt es eine Möglichkeit, einen Klick auf eine Warnung in JavaScript zu simulieren?
- 8. Gibt es eine Möglichkeit, eine Funktion in jQuery zu deaktivieren?
- 9. Binden Sie einen Klick an eine dynamische Schaltfläche mit jQuery?
- 10. jQuery scrollTop in Container auf Klick funktioniert nur einmal
- 11. Jquery nur einmal klicken
- 12. Gibt es eine Möglichkeit, Duplikate zu vermeiden?
- 13. Gibt es eine Möglichkeit, einen Zweig in GIT zu sperren
- 14. JQuery Klick-Methode funktioniert nur einmal in meinem Quiz
- 15. Gibt es eine Möglichkeit, in jQuery zu verschlüsseln?
- 16. Gibt es eine Möglichkeit, 1 Gegenstand nur einmal innerhalb einer foreach Schleife zu spawnen?
- 17. An DataGridView binden - Gibt es eine Möglichkeit, die Hintergrundfarbe einer Zelle zu "binden"?
- 18. Gibt es eine Möglichkeit, nur 'X' Ereignis aus modalen Dialog mit jQuery zu erfassen?
- 19. Gibt es eine Möglichkeit, einen Unterordner in Vagrant zu synchronisieren?
- 20. Gibt es eine Möglichkeit, einen String in Flex zu forma
- 21. Gibt es eine Möglichkeit, einen Pfadverlauf in JavaFX zu erstellen?
- 22. Gibt es eine Möglichkeit, einen Konstruktor nur für eine Elternklasse in C# sichtbar zu machen?
- 23. Gibt es eine Möglichkeit, Pipe zu verwenden, um nur einen Parameter in das Skript zu übertragen?
- 24. Gibt es eine Möglichkeit, einen laufenden Countdown zu ändern?
- 25. Gibt es eine Möglichkeit, um nur Dateien zu glob()?
- 26. Gibt es eine gute Möglichkeit, jQuery-Code zu validieren?
- 27. Gibt es eine Möglichkeit, zu einer Liste von Doubles für die Bearbeitung in WPF zu binden?
- 28. Gibt es eine Möglichkeit, Informationen aller clusterItems anzuzeigen (ohne Klick)?
- 29. Gibt es eine Möglichkeit, einen Prozess "aufwärmen" zu lassen?
- 30. FLEX: Gibt es eine Möglichkeit, multiple Token auf einmal
Sie vermissen ein ');' drin. – Ben
Oh danke Ben, das reparieren ... –
Wusste nicht von diesem. – DMin