我记得在某些时候Opera ( Mostlikely it was Safari instead. )
遇到了一个问题,即如果你在元素上使用.hide()
,它会在实际隐藏元素之前暂时闪现。
现在如果你不想忽略那些由于某种原因在他们的浏览器中没有js的人你真的不能使用CSS在该元素中设置display: none;
来隐藏它然后使用js来淡化它
我最近注意到这在Opera中不再发生了。所以,我想知道在某些浏览器中是否仍然会发生这种情况,因为我错过了这一点。并且认为这会发生。最安全的方法是什么? (当然,在这种情况下忽略了css方法。)
js .hide()
js .addClass('hide')
css .hide { display: none; }
还是其他什么?
编辑:
js element.style.display = "none"
js $(element).css({display:"none"})
Edit2:这个问题可能实际上是在Safari中。我也认为较新的jquery版本可能已经解决了这个问题。因为我认为在jquery网站上有一些关于这个问题的bug报告,但我找不到那些bug报告..或者它仍然可能是那个更新的浏览器版本修复它..不确定。
所以,当我开始在Safari而不是Opera中搜索这个错误时,我的确发现了更多。虽然我不能肯定地说它从未在歌剧中发生过......
似乎这个问题不再存在,并且使用.hide()
是安全的,但我学到的是,当问题仍然存在时,$(element).css({display:"none"})
确实解决了问题。 / p>
答案 0 :(得分:5)
您应始终依赖于使用jQuery
hide()
方法隐藏任何元素,因为它会处理所有浏览器。我在Opera
中没有看到任何问题。
即使要显示任何元素,您仍应始终依赖于show()
方法再次出于同样的原因。
E.g。要显示tr
元素,如果我们说tr.css("display", "block")
它将无法在Firefox中使用,因为它是一个表格行,需要将其指定为.css("display", "table-row")
。但是如果你使用tr.show()
,你不必担心任何浏览器。
答案 1 :(得分:1)
只需在样式表中添加display:none或在元素上添加内联样式=“display:none”。
答案 2 :(得分:0)
您可以使用noscript提供始终显示的替代元素,而JS元素则隐藏起来。
或者你可以使用没有CSS规则的类开始,然后获得一个脚本来改变CSS类规则,以确保元素从隐藏开始。
<html>
<head>
<style type="text/css">
p.start-hidden-if-js-enabled {
}
</style>
<script type="text/javascript">
document.styleSheets[0].cssRules[0].style.display = "none";
</script>
</head>
<body>
<p class="start-hidden-if-js-enabled">
This text will be hidden if javascript is enabled.
</p>
</body>
</html>