Angenommen, stuff
enthält eine beträchtliche Menge html einschließlich eines Elements, das ich in die folgende Zeile füllen möchte:
$("#content").html(stuff);
Kann die folgende Zeile das in stuff
definierte Element füllen oder ist es möglich, dass der Code noch läuft?
Wenn der Code beendet ist, ist es immer noch möglich, dass das Element nicht existiert, weil der Browser es noch nicht gerendert hat?
Ich weiß, wenn ich .load (für den ersten Download des Elements) verwende, dass ich einen Callback verwenden muss, aber der Callback, der mit .html () kommt, ist kein do-this- wenn-gemacht-Ding wie sie normalerweise sind, was ist, was mich wirklich verwirrt hat. Angesichts der Ähnlichkeit zwischen .html und .load und dem Wissen, dass .load asynchron ist, sagt mir mein Bauch, dass .html auch sein muss, aber ich kann keinen Hinweis finden. Bitte helfen.
Die Antwort ist bereits in den Kommentaren gegeben, aber um es ein wenig zu erklären:
Die html-Methode ruft keinen Callback auf, es ist nur eine Funktion, die das jQuery-Objekt zurückgibt, wenn ein Parameter angegeben wird (oder sonst der HTML-Inhalt).
Sagen Sie zum Beispiel, wenn stuff
eine sehr große Zeichenfolge ist, die viel html enthält und das Skript verlangsamt, wartet der Rest des Skripts, bis die HTML-Datei vorhanden ist.
Was Sie gefragt haben, ist sicherlich möglich:
%Vor% Aber wenn stuff
durch ajax mit .load()
geladen wird, muss die dritte Zeile im Callback sein, um den Platzhaltertext zu ersetzen, sobald der html vom Server empfangen wurde:
was übrigens nicht mehr als eine Abkürzung ist:
%Vor%Tags und Links jquery