2009-04-27 9 views
6

Il mio progetto di una pagina mi obbliga ad aggiornare l'intera pagina con html che ho caricato tramite ajax.Come selezionare e sostituire l'intera pagina con jQuery

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

Mi dà errori. Qualche idea?

+1

Inserisci l'errore e il contenuto dei dati –

+0

Il tag html non contiene lo script che sta eseguendo la sostituzione? Se stai usando il body tag assicurati che il tuo html si adatti. –

risposta

17

uso del corpo:

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

Anche se questo non sostituirà la sezione head, che potrebbe essere necessaria per caricare i file Javascript e CSS necessari per rendere correttamente la pagina. – ngeek

+0

In realtà, jQuery fa il lavoro di eseguire qualsiasi javascript incorporato. Verranno applicati assolutamente fogli di stile CSS. Basta rendersi conto che i fogli di stile CSS che hai rimosso rimangono nei set di regole, non vengono rimossi. – cgp

8

Ho avuto alcuni problemi con

$("body").replaceWith(newPage) 

avermi dato qualche problema css strani, ma questo wored bene:

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

Ho avuto lo stesso problema , ma questo non ha aiutato. Se è necessario sostituire anche il tag <head> (così, l'intera pagina), si può anche fare

document.write(newPage); 
+2

So che questa è una vecchia domanda, ma per riferimenti futuri, funziona, ma devi capire che potrebbe lasciare i vecchi gestori di script DOM e causare perdite di memoria. – RajeshT

+0

Grazie. Ha funzionato meglio di qualsiasi altra soluzione che potrei trovare. –

2

Strano comportamento da jQuery.replaceWith e jQuery.html quando eseguito con selettore 'corpo'. Si perde il tag body dopo la chiamata:

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

non accade con qualsiasi altro selettore come:

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

anche jQuery.html non raddoppia il tag body (come fa con altri tag), e funziona come ReplaceWith quando viene chiamato in questo modo:

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

Spero che questa non è una zona grigia di jQuery. O se lo è, non pensano di risolverlo. Ho applicazioni in cui utilizzo $ ('body'). Html quando $ ('body'). ReplaceWith dovrebbe essere usato.

Problemi correlati