2009-04-27 6 views
6

Mój projekt strony zmusza mnie do odświeżenia całej strony za pomocą html, który załadowałem przez ajax.Jak wybrać i zamienić całą stronę za pomocą jQuery

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

Daje mi błędy. Jakieś pomysły?

+1

Proszę zaksięgować błąd i zawartość danych –

+0

Czy znacznik html nie zawiera skryptu, który zastępuje? Jeśli używasz tagu body, upewnij się, że Twój html jest odpowiedni. –

Odpowiedz

17

użycie ciała:

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

Chociaż nie zastąpi to sekcji head, która może być wymagana do załadowania niezbędnych plików JavaScript i CSS niezbędnych do poprawnego renderowania strony. – ngeek

+0

W rzeczywistości jQuery wykonuje pracę w dowolnym wbudowanym javascript. Arkusze stylów CSS zostaną bezwzględnie zastosowane. Po prostu zdaj sobie sprawę, że usunięte arkusze stylów CSS pozostają w zestawach reguł, a nie są usuwane. – cgp

8

miałem pewne problemy z

$("body").replaceWith(newPage) 

dając mi jakieś dziwne problemy z CSS, ale to wored porządku:

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

miałem ten sam problem , ale to nie pomogło. Jeśli trzeba także wymienić tag <head> (tak, cała strona), można również zrobić

document.write(newPage); 
+2

Znam to stare pytanie, ale dla przyszłych referencji działa to, ale musisz zrozumieć, że może on opuścić stare procedury obsługi skryptów DOM i spowodować wycieki pamięci. – RajeshT

+0

Dzięki. To działało lepiej niż jakiekolwiek inne rozwiązanie, które mogłem wymyślić. –

2

dziwne zachowanie przez jQuery.replaceWith i jQuery.html gdy wykonywane z „ciała” selektora. Tracisz tag ciała po wywołaniu:

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

To nie zdarza się w przypadku każdego innego selektora jak:

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

także jQuery.html nie podwoić tag ciała (jak ma to miejsce z inne znaczniki) i działa jak replaceWith kiedy nazywa tak:

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

mam nadzieję, że nie jest to szara strefa jQuery. Lub jeśli tak jest, nie myślą, aby to naprawić. Mam aplikacje, w których używam $ ("body"). Html, gdy $ ("body"). ReplaceWith powinien być użyty.