2012-05-03 16 views
18

Mi piacerebbe aggiornare un div. Dovrebbe avere nuove informazioni dal server su di esso. Tutte le altre risposte per scontato che hai ottenuto i nuovi dati dalla richiesta .ajax $ e ti dicono di caricare i dati sul vostro div, nasconderlo, e mostrare di nuovo, in questo modo:refresh div con jquery

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

lo so , Lo so, probabilmente dovrei semplicemente ottenere dati con Ajax. Ma al momento, voglio semplicemente aggiornare il div, senza aggiornare la pagina, e senza inserire nuovo HTML nel div. È possibile?

+0

Qual è il punto che aggiorna il div senza inserire nuovo codice HTML in esso? Presumo che tu abbia contenuto originale nel div che viene modificato in qualche modo e deve essere rimesso nel div? – Thomas

+0

Usa semplicemente .empty() sull'elemento div per svuotarlo o anche .html ('') – GillesC

+0

@gillesc Non metti nuovo html nel div? – Thomas

risposta

35

Voglio solo aggiornare il div, senza aggiornare la pagina ... È possibile?

Sì, anche se non sarà ovvio che fa qualcosa a meno che non si cambi il contenuto del div.

Se si desidera solo la grafica effetto fade-in, è sufficiente rimuovere il .html(data) chiamata:

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

Ecco una demo si può pasticciare con: http://jsfiddle.net/ZPYUS/

Si cambia il contenuto del div senza effettuare una chiamata ajax al server e senza aggiornare la pagina. Il contenuto è hardcoded, però. Non puoi fare nulla a riguardo senza contattare il server in qualche modo: ajax, una sorta di richiesta di sotto-pagina o qualche tipo di aggiornamento della pagina.

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

Inizierò una petizione per terminare questa era "foo bar foobar" :) –

+5

@ RokoC.Buljan: perché tutti sappiamo quanto siano efficaci le proteste di Internet, soprattutto quando si cambia un meme culturale che è stato circa da 50 a 80 anni] (http://en.wikipedia.org/wiki/Foobar#History_and_etymology) :) –

8

ho provato la prima soluzione e funziona, ma l'utente finale può facilmente identificare che i div sono rinfrescando come è fadeIn(), senza dissolvenza ho provato .toggle(). toggle() e funziona perfettamente. si può provare in questo modo

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

funziona perfettamente per me come io sto sviluppando un messaggero e la necessità di minimizzare e massimizzare la finestra della chat e di questo lo fa meglio, piuttosto che il codice di cui sopra .