2011-05-07 34 views
3

我正在使用jQuery Accordion。當頁面加載時,所有div在隱藏之前會閃爍一秒。我希望div在加載時保持隱藏狀態。我想我這樣做,經由文件準備檢查的JavaScript之外,像這樣將它們設置爲隱藏:使用jQuery UI隱藏div頁面加載手風琴小部件

$('#accordion div').hide(); 
$('#accordion2 div').hide(); 

jQuery(document).ready(function($) {... 

但是這是行不通的,我懷疑這是因爲我使用的$快捷方式尚未宣佈。

如何在頁面加載時觸發hide()函數而不是等到完全加載後才隱藏div?

謝謝!

+0

請給出更多的細節,如你的HTML。您可能試圖隱藏尚不存在的內容。 – c0mm0n 2011-05-07 20:38:20

回答

7

它不工作的原因是因爲您試圖在元素存在之前隱藏元素。如果你把代碼放在頁面的最後,它會起作用,但即使如此,你也不能確定它們在一瞬間不可見。

使用CSS來隱藏他們,而不是,那麼他們已經隱藏,當他們接觸到所有腦幹:

<style type="text/css"> 

#accordion div, #accordion2 div { display: none; } 

</style> 
+0

我以爲我以前曾嘗試過這種方式,但它不起作用,但現在只是嘗試了一下而已。我必須有別的東西阻止代碼正常工作。謝謝。 – Yazmin 2011-05-10 00:43:20

+0

這對我來說非常合適。這是最佳做法嗎? – Kwestion 2014-05-29 20:05:46

+1

@Kwestion:是的,這種方法是最初隱藏元素的最好方法。如果您有頁面的樣式表,那麼您寧願將規則放在那裏,而不要放在樣式標籤中。 – Guffa 2014-05-29 22:23:09

3

這些語句試圖隱藏尚未加載的東西:

$('#accordion div').hide(); 
$('#accordion2 div').hide(); 

隨着jQuery你應該這樣寫:

$(function(){ 
    $('#accordion div').hide(); 
    $('#accordion2 div').hide(); 
}); 

所以,代碼會在骨架的html文件將被加載

+0

該解決方案也適用,但會刷新頁面上的所有div。謝謝你糾正我的代碼。 – Yazmin 2011-05-10 00:44:23