2012-05-03 22 views
18

Chciałbym odświeżyć div. Powinien zawierać nowe informacje z serwera. Wszystkie inne odpowiedzi zakładają, że dotarłeś nowe dane z wniosku .ajax $ i powiedzieć, aby załadować te dane na swojej div, ukryć go i pokazać go ponownie, tak jak poniżej:odśwież div z jquery

$("#panel").hide().html(data).fadeIn('fast'); 

wiem , Wiem, prawdopodobnie powinienem dostać dane z Ajax. Ale teraz chcę po prostu odświeżyć element div, bez odświeżania strony i bez wprowadzania nowego kodu HTML do elementu div. czy to możliwe?

+0

Jaki jest sens odświeżania elementu div bez wstawiania do niego nowego html? Zakładam, że masz oryginalną zawartość w div, która zostaje jakoś zmieniona i musi zostać ponownie umieszczona w div? – Thomas

+0

Po prostu użyj .empty() na elemencie div, aby go opróżnić lub nawet .html ('') – GillesC

+0

@gillesc Czy to nie wstawia nowego html do div? – Thomas

Odpowiedz

35

Chcę po prostu odświeżyć element div, bez odświeżania strony ... Czy to możliwe?

Tak, chociaż nie będzie oczywiste, że robi cokolwiek, chyba że zmienisz zawartość div.

Jeśli chcesz tylko graficznego blaknięcie w efekcie, po prostu usunąć .html(data) połączenia:

$("#panel").hide().fadeIn('fast'); 

Oto demo można poeksperymentować z: http://jsfiddle.net/ZPYUS/

Zmienia zawartość div bez wykonywania wywołania ajax na serwerze i bez odświeżania strony. Treść jest jednak mocno zakodowana. Nic nie możesz zrobić z tym faktem bez kontaktu z serwerem w jakiś sposób: ajax, jakieś żądanie podstrony lub jakiś odświeżenie strony.

html:

<div id="panel">test data</div> 
<input id="changePanel" value="Change Panel" type="button">​ 

javascript:

$("#changePanel").click(function() { 
    var data = "foobar"; 
    $("#panel").hide().html(data).fadeIn('fast'); 
});​ 

css:

div { 
    padding: 1em; 
    background-color: #00c000; 
} 

input { 
    padding: .25em 1em; 
}​ 
+31

Zacznę petycję, aby zakończyć ową erę "foo bar foobar" :) –

+5

@ RokoC.Buljan: Ponieważ wszyscy wiemy, jak skuteczne są protesty w Internecie, zwłaszcza przy zmianie mem kulturowy, który jest [gdzieś pomiędzy 50 a 80 lat] (http://en.wikipedia.org/wiki/Foobar#History_and_etymology) :) –

8

Próbowałem pierwsze rozwiązanie i działa, ale użytkownik końcowy może łatwo zidentyfikować, że div są odświeżanie, ponieważ jest to fadeIn(), bez zanikania i próbowałem .toggle(). toggle() i działa idealnie. można spróbować jak to

$("#panel").toggle().toggle();

działa idealnie dla mnie jako Zajmuję posłańca i trzeba minimalizować i maksymalizować okno czatu, a to robi to najlepiej zamiast powyższego kodu .