2009-04-27 4 views
6

Ma conception d'une page me force à actualiser toute la page avec le code html que j'ai chargé via ajax.Comment sélectionner et remplacer la page entière avec jQuery

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

donne des erreurs moi. Des idées?

+1

Veuillez publier l'erreur et le contenu des données –

+0

La balise html ne contiendra-t-elle pas le script qui effectue le remplacement? Si vous utilisez l'étiquette de corps assurez-vous que votre code HTML correspond. –

Répondre

17

Utiliser corps:

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

Bien que cela ne remplacera pas la section head, ce qui pourrait être nécessaire pour charger les fichiers Javascript et CSS nécessaires pour rendre la page correctement. – ngeek

+0

En fait, jQuery fait le travail d'exécuter n'importe quel javascript embarqué. Les feuilles de style CSS seront absolument appliquées. Sachez simplement que les feuilles de style CSS que vous avez supprimées restent dans les jeux de règles, elles ne sont pas supprimées. – cgp

8

J'ai eu quelques problèmes avec

$("body").replaceWith(newPage) 

me donner quelques problèmes de css étranges, mais ce wored bien:

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

J'ai eu le même problème , mais cela n'a pas aidé. Si vous devez remplacer également la balise <head> (donc, la page entière), vous pouvez également faire

document.write(newPage); 
+2

Je sais que c'est une vieille question, mais pour les futures références, cela fonctionne, mais vous devez comprendre qu'il peut laisser les anciens gestionnaires de script DOM et entraîner des fuites de mémoire. – RajeshT

+0

Merci. Cela fonctionnait mieux que toute autre solution que je pouvais trouver. –

2

Comportement étrange par jQuery.replaceWith et jQuery.html lorsqu'il est exécuté avec le sélecteur « corps ». Vous perdez l'étiquette du corps après l'appel:

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

Il ne se produit pas avec tout autre sélecteur que:

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

également jQuery.html ne double pas la balise body (comme il le fait avec d'autres balises), et fonctionne comme replaceWith lorsqu'il est appelé comme ceci:

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

J'espère que ce n'est pas une zone grise de jQuery. Ou si c'est le cas, ils ne pensent pas à le réparer. J'ai des applications où j'utilise $ ('body'). Html quand $ ('body'). ReplaceWith devrait être utilisé.

Questions connexes