2011-05-07 33 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