2012-07-17 61 views
2

方案: 我有一个页面有多个DIV。一些DIV应该在首页加载时隐藏。我用jquery hide()函数来隐藏DIV。jquery hide()函数显示在页面加载

问题: 出于某种原因,jquery hide函数似乎只能部分工作,即需要完全隐藏的DIV显示一秒钟和隐藏。

请问有没有办法解决这个问题?

+0

你可以试试CSS吗? 'div.hide {display:none; }'。只有在DOM准备就绪后,jQuery才会运行。 – 2012-07-17 04:18:36

回答

9

在DOM准备就绪之前,您的JavaScript将不会被执行(您无法隐藏尚不存在的元素),因此浏览器呈现它并隐藏它。取决于浏览器的速度和代码的效率,您可能会注意到它,也可能不会注意到它。

一个更好的解决方案是使用css加载隐藏元素。

#elementId { display:none; } 

你会将这个规则包含在你的css的其余部分的样式标签中。如果你有很多要隐藏/显示的元素,给他们一个普通的类名;那么你可以一次切换他们的能见度。造成这种情况的CSS将是:

.commonClassName { display:none; } 

然后在你的jQuery你可以叫.show()向他们展示,或.toggle()切换自己的知名度的开/关。 jQuery的类选择是相同的CSS之一:

$('.commonClassName').show(); 

注:您也可以使用HTML样式属性做造型的变化: style="display:none;"但是,对于我在评论概述的原因,这通常是不是要采取的路线。

+0

谷歌开发人员建议内嵌小代码片段。像这样的代码(简单的显示:块;)很好地放在内联(可能更快(?))。 – 2012-07-17 04:29:29

+0

@bram它可能会更快的内联。但使用类选择器时,它必须是样式标签。在任何情况下,如果OP已经拥有该页面的css,将所有内容放在一个地方看起来更直观,因为可以添加其他规则来定位该选择器而不重写它,并且更容易进行更改。另外,如果css在外部文件中,它可以被缩小,缓存等,这肯定会更快。总而言之,我认为采用*不*使用内联样式的习惯会更有意义(我会更新并分享替代品,尽管如此:P) – nbrooks 2012-07-17 04:45:47

+0

用实例很好的回答喜欢它,谢谢! – 2012-07-17 05:13:17