2011-05-12 31 views
6

在頁面加載()隱藏的元素,如果我使用jQuery隱藏在Page_Load中的一些元素,這些元素閃爍的一瞬間,當頁的帖子,然後消失:與jQuery

function pageLoad() { 

     $('#panelOne').hide(); 
     $('#panelTwo').hide(); 

有沒有辦法阻止閃爍?

我不想將元素CSS設置爲visibility:hidden,因爲之後調用jquery .show()方法似乎沒有顯示元素。

+0

我通常只是設置顯示:無,但我希望看到更好的解決方案,如果有的話。 – 2011-05-12 22:27:29

+0

設置CSS顯示:無;是最好的選擇。這將與.show();後來。和平... – 2011-05-12 22:30:39

+1

我試過顯示:無;在CSS我自己,但你如何得到它的工作沒有JavaScript切換顯示,如果用戶已禁用JS? – robx 2011-05-12 22:38:44

回答

6

設置visibility: hidden不起作用,但display: none呢。 See jsFiddle.

您可以在DOMReady事件上做到這一點,但在CSS中執行它會更乾淨。

+0

hide()ing確實將顯示設置爲none,所以這應該沒有什麼區別(除了hide()會通過存儲顯示的原始值來避免一些邊界錯誤) – 2011-05-12 22:54:47

+0

我相信jQuery的hide方法實際上設置了「display :沒有'爲你。 – Alxandr 2011-05-12 22:56:26

+0

好的。但是在CSS中這樣做更乾淨,幾乎肯定會更快。 – lonesomeday 2011-05-12 22:57:29

1

而不是隱藏在頁面加載,隱藏在domready中像這樣:

$(function() { ........ }); 

更換......你的2線隱藏的。

Domready在dom-tree構建完成時運行,比pageLoad早得多。 Pageload等待圖像和東西運行。 (假設你有pageLoad如下:<html onload="pageLoad();">)。

+1

事實上,我在這樣做時仍然看到閃爍。這與document.ready()相同嗎? – 2011-05-12 22:46:38

+0

是的,$(function)是document.ready的縮寫。如果您仍然看到閃爍,則需要考慮隱藏代碼中的元素(html/css),然後在需要時再次在js中顯示它。 – Alxandr 2011-05-12 22:55:42

+0

@Sean:你有一個示例URL?我正在努力理解閃爍的原因。 – 2011-05-12 23:45:45

1

肯定使用的文件準備,而不是頁面加載:

$(function() { 
    $('#panelOne, #panelTwo') 
     .hide(); 
}); 
2

$.show()不會對設置爲visibility: hidden元素工作。您需要使用display: none。這會比使用jQuery隱藏DOM準備好,並且絕對保證你不會看到閃爍。