2011-12-31 106 views
1

默認情況下(我們默認顯示它,並且我們試圖用jQuery隱藏它),當文檔準備好在特定的<div>上時,我調用hide()函數display:blockvisibility:visible在文檔準備就緒時調用hide()時閃爍

有時當我刷新頁面時,<div>會在幾分之一秒內出現,然後根據hide()函數消失。

我的問題:有沒有辦法避免這種<div>閃爍?

感謝

+0

是不是有一個原因,你不是用CSS隱藏你的元素首先停止fliker,你可以改變可見性:對可見性可見:隱藏 – 2011-12-31 13:31:28

+0

通常你不想這樣做,因此它適用於沒有JS的用戶,或者所以搜索引擎可以計算出發生了什麼。 – 2011-12-31 13:32:23

+0

聽起來像是「你沒有js啓用」的警告。在那種情況下,他不能用JS顯示它,但必須隱藏它......但是noscript將是另一種選擇。 – ThiefMaster 2011-12-31 13:32:57

回答

1

它的渲染單元和執行你的JS代碼之間的時間。 避免這種不把代碼在DOM就緒事件,但該元素之後的道路:

<div id="whatever">...</div> 
<script>$('#whatever').hide();</div> 

別的這樣的註冊事件處理程序仍然可以進入,當然你的DOM就緒功能。

哦,你不需要使用visibility在所有 - show()hide()只有無論如何都會使用display屬性。


如果你要隱藏的元素是「請啓用JavaScript」的警告,請考慮使用<noscript>...</noscript> - 那麼它永遠不會出現,除非JS被禁用。

+0

非常感謝這個答案。是的,我不使用顯示:沒有非懲罰js禁用的球員。謝謝大家。 – JojoLapin45 2011-12-31 15:07:55

+1

@Jojo如果此答案幫助您解決問題,請務必將其標記爲已接受。這可以幫助其他人快速輕鬆地找到同樣的問題。 – gobernador 2012-07-18 14:25:31

0

是的,默認可見性:隱藏,並顯示()你想要的。或者,在用$('...')。hide()緊接在相關html之後加載html後立即調用hide()。

發生'扭曲'的原因是,一旦html命中瀏覽器就會加載該塊,但隱藏它的jquery不會被執行,直到瀏覽器加載完所有的html並準備好DOM爲止。

相關問題