JQuery - $(document).bereit ajax laden
Ich schaute auf ziemlich viele Fragen und ich muss diese Frage ganz anders, als ich sah, nur ein paar, die schien zu beziehen.
Ich bin das laden einer gesamten mittleren div via JQuery Ajax call und ich möchte einfach in der Lage sein, um eine automatische JQuery auf diesem neuen Gebiet wie $(document).bereit erlaubt, wenn ein DOM geladen wird. Ich habe gelesen, dass livequery dies zu tun wäre, aber ich dachte mir, es wäre ein Weg hinein gebaut. Ich werde versuchen, fügen Sie einen Datums-picker, um ein Eingabefeld rechts ein Anfang.
Dies ist der Inhalt, wird der Inhalt im backend, welche dann ziehen einige bestimmte Abschnitt.
$.post("ReportingWizard",$("#wizard_form").serialize(), function (data) { setData(data); });
function setData(data) {
divElement.innerHTML = data;
$(activeTab).fadeIn(); //Fade in the active content
$(".wizardBody").fadeIn();
}
Innerhalb der Datei, wird in das div wird eine JQuery-Methode, die ausgeführt werden muss, ändern Sie die html drin.
- Was möchten Sie tun und Wann? Nach der "mittleren div" geladen ist?
- Ich will, dass es Hinzugefügt werden, vor dem Mitte-div geladen werden, aber auf der Grundlage der Inhalte, die heruntergeladen wird. Das JQuery ist eigentlich der Inhalt geladen und im Grunde gibt divs ids und fügt Bilder und Datum-picking-Fähigkeiten auf bestimmten Gebieten und.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Registrieren Sie sich auf Ereignisse in der callback des AJAX-Funktion.
Wenn Sie
.load()
zu tun, laden Sie die mittleren div, platzieren Sie Ihre jQuery-code direkt in der callback:Wenn Sie einige der anderen AJAX-Funktionen, legen Sie Ihre jQuery-code nach der Zeile, wo du fügen Sie die Elemente, die dem DOM in die callback:
Wenn es Ereignisse, die Sie binden wollen, könnte man auf die Verwendung .
()
(bzw .delegieren()
oder.live()
wenn Sie mit den älteren Versionen von jQuery, das waren um, wenn diese Frage ursprünglich geschrieben wurde). Sie können sehen, einen Vergleich dieser verschiedenen Methoden hier.Diese Methoden erlauben es, die Bindung der Ereignisse an, die Elemente, auch wenn Sie noch nicht in der DOM; das heißt, Sie können binden Sie die Ereignisse in Ihrem
$(document).ready()
block, auch wenn die Elemente nicht registriert in der DOM noch.on('ready', '.my-class', handler)
, aber es hat nicht funktioniert.ready
Ereignis, wenn Sie auf der Seite Hinzugefügt; dieready
Veranstaltung ist für Bilder, die dokumentieren, und das wie (die be state). Es gibt keine x-browser die Möglichkeit zu erkennen, die Zugabe von ein element der Seite automatisch; Sie haben, bedingt zu prüfen, a) auf load, und b) jedes mal, wenn die Seite aktualisiert sich per AJAX.Craig,
Ich denke, dass Sie versuchen, zu gehen die harte Weise.
Erstens: Obwohl Sie technisch manipulieren könnte die Antwort mit javascript/jquery, bevor Sie injizieren Sie in die Seite, es geht um eine Hölle von viel einfacher, dies zu tun sofort, nachdem Sie Hinzugefügt wurden (wie in der ein Dokument bereit).
Zweitens: ich bin mir nicht sicher, wie effektiv diese Methode ist, wenn Sie etwas Hinzugefügt, was wie ein datepicker. Ich vermute, Sie können nicht hinzufügen ein datepicker auf ein element, bevor das ganze in die Seite (nur eine Vermutung). Diejenigen, die jQuery-UI-widgets haben eine Menge Los in den hintergrund.
Ich schlage vor, Sie Folgen Sie dem Rat von der Matte.
Wenn Sie rufen Sie $.post, die callback-Funktion ist die gleiche wie die $(document).ready Funktion wird aufgerufen, sobald die Antwort verfügbar ist, so dass Sie könnte so etwas wie dieses:
Dies ist der beste Weg, um darüber zu gehen. Die manipulation erfolgt, sobald die Daten wurde injiziert in Ihre Seite das gleiche wie $(document).bereit.
Wenn Sie denken, dass es einige Verzögerung mit, was Sie tun und Sie nicht möchten, dass Ihre Benutzer sehen, dann set display zu verstecken und dann "fade in" oder Karte einmal die manipulation durchgeführt wurde.