2009-04-27 2 views
6

Mein Design einer Seite zwingt mich, die ganze Seite mit HTML zu aktualisieren, die ich über Ajax geladen habe.So wählen und ersetzen Sie die ganze Seite mit jQuery

$('html').replaceWith(data);

gibt mir Fehler. Irgendwelche Ideen?

+1

Bitte Fehler und Inhalt der Daten melden –

+0

Wird das HTML-Tag nicht das Skript enthalten, das den Austausch durchführt? Wenn Sie das Body-Tag verwenden, stellen Sie sicher, dass Ihr HTML-Code passt. –

Antwort

17

Verwenden Körper:

$('body').replaceWith(data); 
+2

Dies ersetzt zwar nicht den Kopfbereich, der benötigt wird, um die notwendigen Javascript- und CSS-Dateien zu laden, um die Seite korrekt zu rendern. – ngeek

+0

Tatsächlich erledigt jQuery die Arbeit, jedes eingebettete Javascript auszuführen. CSS Stylesheets werden absolut angewendet. Beachten Sie, dass die CSS-Stylesheets, die Sie entfernt haben, in den Regelsätzen bleiben und nicht entfernt werden. – cgp

8

hatte ich einige Probleme mit

$("body").replaceWith(newPage) 

mir einige seltsame CSS-Probleme geben, aber das wored fein:

$("body").html(newPage); 
17

Ich hatte das gleiche Problem , aber das hat nicht geholfen. Wenn Sie müssen auch den <head> Tag ersetzen (so, die ganze Seite), können Sie auch

document.write(newPage); 
+2

Ich weiß das eine alte Frage, aber für zukünftige Verweise funktioniert das, aber Sie müssen verstehen, dass es die alten DOM-Skripthandler verlassen und zu Speicherlecks führen kann. – RajeshT

+0

Danke. Es funktionierte besser als jede andere Lösung, die ich mir vorstellen konnte. –

2

Seltsames Verhalten von jQuery.replaceWith und jQuery.html tun, wenn sie mit ‚Körper‘ Selektor ausgeführt. Sie verlieren den Body-Tag nach dem Aufruf:

$('body').replaceWith('<body>New body</body>'); 

Es nicht mit anderem Selektor geschieht wie:

$('title').replaceWith('<title>New title</title>'); 

Auch jQuery.html nicht den Body-Tag verdoppelt (wie sie mit andere Tags) und arbeitet wie replaceWith wenn wie folgt aufgerufen:

$('body').html('<body>New body</body>'); 

ich hoffe, dass dies nicht eine Grauzone von jQuery ist. Oder wenn es so ist, denken sie nicht daran, es zu reparieren. Ich habe Anwendungen, wo ich $ ('body') html wenn $ ('body') .replaceWith sollte verwendet werden.