Skripte, die mit jQuery .load entfernt werden

8

Ich glaube nicht, dass diese Frage schon früher gestellt wurde, zumindest nicht so, wie ich sie beantworten muss. Ich benutze die .load-Funktion von jQuery. Ich habe ein Problem beim Laden nur der Seitenfragmente.

Wenn etwas wie folgt verwendet wird:

%Vor%

Alle Skripte in loadTest.html laden einwandfrei. Wenn Sie jedoch Seitenfragmente wie folgt laden:

%Vor%

Die Skripte werden entfernt, bevor das DOM aktualisiert wird

Dies ist in Ссылка eindeutig dokumentiert, wo es heißt:

Hinweis: Beim Aufrufen von .load () mit einer URL ohne suffixierten Selektorausdruck wird der Inhalt vor dem Entfernen von Skripten an .html () übergeben. Dies führt die Skriptblöcke aus, bevor sie verworfen werden. Wenn .load () jedoch mit einem an die URL angehängten Selektorausdruck aufgerufen wird, werden die Skripts vor der Aktualisierung des DOM entfernt, weshalb sie nie ausgeführt werden. Ein Beispiel für beide Fälle ist unten zu sehen:

Ich verstehe, dass ich das Skript einfach extern laden kann, das überall verwendet werden kann, aber die Sache ist, dass ich ein seitenweites Ajax-System verwende, bei dem alles dynamisch geladen wird. Also habe ich nicht wirklich das Gefühl, jede einzelne JavaScript-Funktion, die ich jemals schreiben werde (in diesem Punkt 100), in externen Dateien zu speichern. Vor allem, weil einige dieser JavaScript-Funktionen aus Werten bestehen, die aus einer Datenbank geladen werden, die ich in einer .js-Datei nicht berücksichtigen kann.

Gibt es eine Problemumgehung für das Entfernen der Skripts, bevor das DOM aktualisiert wird? Könnte ich sie irgendwie manuell laden? Jedes winzige Beispiel wäre hilfreich für mich.

    
Galway 18.12.2011, 05:41
quelle

2 Antworten

4

Wie du gesagt hast. jQuery extrahiert dieses Element, bevor nur dieser Block ausgeführt wird.

Sie können die Ausgabe so ändern, dass der Server die Daten in einem Format zurückgibt, das Sie benötigen, oder Sie schreiben einfach Ihre eigenen Daten. Es würde die Elemente extrahieren, die sie brauchen, um sie an das DOM auszugeben.

Ungetestet, aber es wäre in etwa so.

%Vor%

Aus dem Speicher ist das mehr gültig ..

%Vor%     
paulcol. 18.12.2011, 06:07
quelle
0

Nach Ihrem Kommentar denke ich, dass Sie an etwas wie js / css lazyload interessiert sein könnten. Es lädt bedingt Skripte, ich benutze es auf einigen kleineren Seiten, um nur Skripte und CSS zu laden, wenn ich sie auf verschiedenen Unterseiten oder Benutzerinteraktion brauche.

Sie laden es einmal in den Kopf:

%Vor%

Und dann können Sie Skripte laden, wann immer Sie sie benötigen, eines der vielen Beispiele:

%Vor%

Funktioniert auch für CSS-Dateien.

Dies könnte in Ihrem Fall hilfreich sein, es könnte jedoch auch Ihre Ladelogik ändern. In jedem Fall denke ich, normalerweise sollten Sie mehrere AJAX-Endpunkte auf Ihrem Server haben, die nur die gewünschten Daten zurückgeben. Sonst können die Dinge spezifisch und sogar knifflig werden.

Also eher ein Kommentar als eine echte Antwort.

    
hakre 19.12.2011 10:06
quelle

Tags und Links