Ich habe einen Code, der auf Klick-Aktion beim Laden der Seite binden, es ist ein Link. Wenn ich darauf klicke, sende ich eine Ajax-Anfrage und ersetze den Inhalt in einem div mit der Funktion jquery append(). Dieser neue Inhalt hat Links und ich muss etwas Aktion für sie binden, aber ich konnte nicht .. bind did't work ich denke, weil jquery append DOM Baum nicht aktualisiert. Wie könnte ich eine späte Bindung bekommen?jquery späte Bindung
Antwort
Späte Bindung ist jetzt verfügbar von jQuery Live() Ereignis verwendet:
$('a.my-links-class').live('click', function() {
// do your link action here
});
Sie müssen die live
-Funktion von jQuery verwenden, die ein Ereignis an alle Elemente bindet, die einem Selektor entsprechen, unabhängig davon, wann sie erstellt wurden.
Sie jQuery 1.3 + 's $().live(event, function)
Funktion nutzen zu können. $("a").live("click", myClickFunc)
wird myClickFunc
wie $("a").click(myClickFunc)
oder $("a").bind("click", myClickFunc)
binden, aber die Ereignisse werden "live" gebunden, so dass Elemente, die dem DOM nach diesem Funktionsaufruf hinzugefügt werden, ebenfalls gebunden werden. Sie können Live-gebundene Ereignisse mit $().die()
entfernen. Weitere Informationen zu $ (). Live, siehe the documentation for it.
Eine andere Möglichkeit wäre, eine Funktion zu haben, die Elemente gegeben einen bestimmten Kontext zu binden (mit dem $ Auswahlfunktion ist selten verwendete zweiter Parameter):
function myBindEvents(context) {
$("a", context).click(myClickFunc);
}
und rufen, dass, wenn Sie ein Element aktualisieren mit AJAX :
$("<div>").load("...", "...", function(){myBindEvents(this);});
Hoffe das hilft. :)
die .live() war veraltet von verions 1.9 bis.
Für alle, die eine spätere Version von Jquery verwenden, können sie das Ereignis .on() verwenden, das funktioniert auf die gleiche Art und Weise.
Es gibt drei Funktionen, die dies tun können:
$(selector).live(events, data, handler);
- jQuery 1.3+ - Version veraltet: 1,7, entfernt: 1,9 (reference)$(document).delegate(selector, events, data, handler);
- jQuery 1.4.3+ - Ab jQuery 1.7 wurde .delegate() durch die Methode .on() ersetzt. (reference)$(document).on(events, selector, data, handler);
- jQuery 1.7+ - bevorzugt (reference)
Es ist im Allgemeinen verwenden on()
adviced und seine Verwendung einfach ist und wahrscheinlich bevorzugt Weg.
- Der erste Selektor muss beim Aufruf der Funktion vorhanden sein und darf nicht gelöscht werden oder das Ereignis wird ebenfalls gelöscht (dies kann
document
sein). - Der erste Parameter ist das Ereignis (z.B."click")
- Der zweite Parameter ist der Selektor, an den das Ereignis gebunden werden soll.
- Dann können Sie schließlich einige benutzerdefinierte Daten und eine Funktion zum Ereignis hinzufügen.
Hier ist ein Beispielcode:
// Make sure the DOM is ready
$(function() {
// Bind the click event to the function
$(document).on("click", "a.class", function(event) {
// Put your code here.
});
});
Brilliant! Ich frage mich, warum das nicht funktioniert: $ (function() { $ ('. Klasse'). On ("click", "a", Funktion (Ereignis)) { // Setzen Sie Ihren Code hier. }); }); – Narayana
Sie suchen ein 'a' Element in einem anderen Element mit der Klasse' class'? – Broxzier
Ja ... Ich dachte, '$ ('. Class1')' wird alle Elemente mit einer Klasse von 'class1' auswählen, das' "a" 'wird die Anker-Tags daraus auswählen und den Event-Handler binden. Nein? – Narayana
Methode .live
in JQuery 1.9
ist deprecated.So jetzt u wie dies tun können:
$("body").on("click", ".classname", function() { ... })
- 1. Frühe Bindung gegen späte Bindung
- 2. Späte Bindung in Java
- 3. späte Bindung in C
- 4. Frühe und späte Bindung
- 5. späte statische Bindung in PHP
- 6. Späte Bindung für Outlook PIA
- 7. C++ dynamic_cast für die späte Bindung Fehler -
- 8. Zeile in Excel einfügen (späte Bindung)
- 9. C++ späte Bindung auf Funktion überlastet
- 10. PHP __DIR__ bewertete Laufzeit (späte Bindung)?
- 11. Von den frühen Bindung Umstellung auf späte Bindung
- 12. AngularJS: späte Bindung von ng-Modell an dom-Element
- 13. CreateObject-Äquivalent für C# 4, dynamisches Schlüsselwort und späte Bindung?
- 14. Späte Bindung an DLL basierend auf der CPU-Architektur
- 15. Wie die späte Bindung verwenden Methode mit ByRef aufrufen Parametern
- 16. Wie kann ich späte Bindung in Active Directory-Suche überwinden
- 17. Wie kann eine späte Bindung in C-Sprache erreicht werden?
- 18. Kann die späte statische Bindung in PHP überstrapaziert werden?
- 19. Späte Bindung vs. Polymorphie - was ist der Unterschied?
- 20. späte statische Bindung in Schließung PHP5.5 vs 5.6
- 21. jQuery UI Datepicker Bindung
- 22. jQuery Bindung Effizienz
- 23. JQuery Bindung und
- 24. Jquery-Funktion Bindung
- 25. JQuery Bindung Click-Ereignis
- 26. Problem mit später Bindung!
- 27. Sehen Sie, ob eine statische Eigenschaft in einer Kindklasse aus der Elternklasse existiert (späte statische Bindung)?
- 28. Welchen Einfluss hat DirectCast auf eine Leistung und eine späte/frühe Bindung?
- 29. Java-Vererbung und späte Bindung, warum hat int id den Elternklassenwert und nicht die Kindklasse?
- 30. Scroll Bindung Problem in jquery
Das machte gerade meinen Tag. live() ist unglaublich! – AnApprentice
Sie sollten 'on()' anstelle von 'live()' verwenden. – Broxzier