jQuery – 隐藏元素的最佳方式? (防止元素在实际隐藏之前闪烁)

我记得在某些时候Opera ( Mostlikely it was Safari instead. )有一个问题,如果你在元素上使用.hide() ,它会在实际隐藏元素之前短暂闪现。

现在,如果你不想忽略那些由于某种原因在他们的浏览器中没有js的人你就不能真正使用CSS来设置display: none; 在该元素中隐藏它然后使用js例如淡入它。

我最近注意到这在Opera中不再发生了。 所以,我想知道在某些浏览器中是否仍然会发生这种情况,因为我错过了这一点。并且认为这会发生。 最安全的方式是什么方式? (当然在这种情况下忽略了css方法。)

js .hide()

js .addClass('hide') css .hide { display: none; } .hide { display: none; }

或者是其他东西?

编辑:

js element.style.display = "none"

js $(element).css({display:"none"})

编辑2:这个问题可能实际上是在Safari中。 我也认为较新的jquery版本可能已经解决了这个问题。因为我认为在jquery网站上有一些关于这个问题的bug报告,但是我找不到那些bug报告..或者它仍然可能是更新的浏览器版本修复它.. 不确定。


EDIT3:

所以,当我开始在Safari而不是Opera中搜索这个bug时,我的确发现了更多。 虽然我不能肯定地说它从未在歌剧中发生过……

似乎这个问题不再存在,并且使用.hide()是安全的,但我学到的是这个$(element).css({display:"none"})确实解决了问题还在那里。

你应该总是依赖于使用jQuery hide()方法来隐藏任何元素,因为它会处理所有的浏览器。 我在Opera没有看到任何问题。

即使要显示任何元素,您仍应始终依赖于使用show()方法,原因相同。

例如,如果我们说tr.css("display", "block") tr元素,它将无法在Firefox中工作,因为它是一个表行,需要指定为.css("display", "table-row") 。 但是如果你使用tr.show()你不必担心任何浏览器。

只需在样式表中添加display:none或在元素上添加内联样式=“display:none”。

你可以使用noscript提供一个始终显示的替代元素,同时JS元素开始隐藏。

或者你可以使用没有CSS规则的类开始,然后获得一个脚本来改变CSS类规则,以确保元素开始隐藏。

       

This text will be hidden if javascript is enabled.