Führen Sie document.ready nach dem Ajax-Post aus
Habe ich eine custom.js Datei in der ich mehrere Elemente, klicken Sie auf und anderen Methoden an Sie gebunden. Die gesamte Datei steckt im Dokument.ready() und alles funktioniert. Jedoch, wenn ich einen AJAX-post offensichtlich Dokument.ready() wird nie gefeuert erneut für die aktuelle Seite. Gibt es trotzdem kann ich bekommen-Dokument.ready (), um das Feuer wieder oder muss ich alles haben, was in der genannten Funktionen nennen Sie mir erstellen.js.erb?
InformationsquelleAutor der Frage Jason Yost | 2011-04-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Konnte man immer nur setzen Sie alles in eine Funktion (benannt loadfunction oder so) und rufen Sie die Funktion, wenn das Dokument geladen wird, und wieder, wenn die ajax geladen wird. Aber es ist eine gehackte zusammen Lösung, sollte es gut genug funktioniert.
So, dann nehmen Sie alles zwischen
$(document).onready(function () {
sein Ende Klammer}
Und steckte es in
function OnloadFunction () {
endend mit}
.Dann legte
$document.onready(OnloadFunction);
Beispiel:
Sie haben
Es würde in:
Dann können Sie anrufen
OnloadFunction
Wann immer Sie wollen.InformationsquelleAutor der Antwort Ben
Es ist ein Ereignis, das löst nach jedem ajax-Aufruf. Es heißt ajaxComplete.
InformationsquelleAutor der Antwort fotanus
Habe ich erfolgreich verwendet ein Muster wie das folgende:
Zuallererst müssen wir definieren .query () - plugin.
Wir schreiben dann unsere init-Funktion und binden Sie es an die "bereit" - Ereignis, und auch für unsere custom "domupdated" Ereignis. Innerhalb der init-Funktion, die wir verwenden
.query()
zu finden Elemente von entweder das gesamte Dokument oder nur die aktualisierten fragment...Dann, wenn wir injizieren Blöcke, um neue Elemente in das DOM (wie bei einem Ajax-request abgeschlossen hat), die wir dann lösen die
domupdated
Veranstaltung und übergeben Sie die aktualisierte DOM-fragment als parameter - zum Beispiel so:Für mich, ist dieses set-up dauert den ganzen Schmerz aus der initing der DOM. Es erlaubt mir zu halten, einen einzigen Satz von init-Routinen, und konzentrieren sich auf den Spaß Dinge.
InformationsquelleAutor der Antwort Már Örlygsson
Ich verwendet habe, einige trick. 😉
Alle code innerhalb geladene Teil der Datei (ajax).
Ich benutze keine 'Erfolg', 'fertig', oder etc. erweiterte functionall von jquery ajax laden.
Zuerst müssen wir bauen keine Funktion.
Zum Beispiel: _autostart();
Auf den Körper wir fügen alle js-code, was wir ausführen müssen am Ende von ajax zu laden.
Dann haben wir einfach diese Funktion ausführen, indem Sie den Zeit-trigger. 😉
Und das ist alles. Getan. 🙂
Natürlich können wir verwenden js-code-Funktion, die auf jedem Fall im html-code nach ajax.
Zum Beispiel: 'onchange', 'onclick', etc.
Es ist der Arbeit zu. 🙂
InformationsquelleAutor der Antwort Brudka