2012-05-03 130 views
18

我想刷新一個div。它應該有來自服務器的新信息。所有其他的答案假設你已經從你的$就要求得到新的數據,並告訴你的數據加載到您的div隱藏,並再次顯示它,就像這樣:用jquery刷新div

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

我知道,我知道,我可能應該只使用Ajax獲取數據。但現在,我只想刷新div,不刷新頁面,也不需要將新的HTML添加到div中。這可能嗎?

+0

什麼是刷新div而不把新的html?我假設你有div中的原始內容以某種方式發生變化,需要放回div中? – Thomas

+0

只需在div元素上使用.empty()來清空它,甚至.html('') – GillesC

+0

@gillesc這不會將新的html放入div嗎? – Thomas

回答

35

我想只刷新div,不刷新頁面...這可能嗎?

是的,雖然它不會很明顯,它會做任何事情,除非您更改div的內容。

如果你只是想圖形淡入效果,只需刪除.html(data)電話:

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

這裏是一個演示中,你可以與周圍亂:http://jsfiddle.net/ZPYUS/

它改變了div的內容而不需要對服務器進行ajax調用,也不需要刷新頁面。但內容是硬編碼的。如果不以某種方式聯繫服務器,你不能做任何事情:ajax,某種子頁面請求或某種頁面刷新。

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

我會開始請願書來終止這個'foo bar foobar'時代:) –

+5

@ RokoC.Buljan:因爲我們都知道互聯網抗議活動是如何有效的,特別是在改變一種文化模式[大約在50到80年之間](http://en.wikipedia.org/wiki/Foobar#History_and_etymology):) –

8

我嘗試的第一個解決方案,它的工作原理,但最終用戶可以容易地識別出div的是刷新,因爲它是fadeIn(),沒有淡入淡出,我嘗試.toggle()。toggle(),它的作品完美。 你可以嘗試這樣的

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

它完美對我來說,因爲我正在開發一個信使,需要最小化和最大化聊天框的,這確實是最好的,而不是上面的代碼。