只是出于好奇,这两种技术中哪一种更“有效”?
我和我的主管讨论过,他告诉我应该使用 display:block/none 创建两个类,并使用 jQuery 将它们分配给元素,而不是使用 jQuery 自己的函数显示/隐藏。
我的印象是显示/隐藏是广泛使用的功能,它们可以毫无问题地工作,并且通过不强迫我们分配类来使我们的生活更轻松。
它们是相同的 -show()
只是在(或,等)和或类似hide()
之间切换。使用这些或使用简单的类在这些样式之间切换都是完全“有效的”。 display: block
inline
inline-block
display: none
主要区别在于它show()
支持hide()
开箱即用的 jQuery 动画。此外,类不会添加内联 CSS,而show()
会添加hide()
(内联 html 以覆盖初始display
值)。根据您的用例,这可能方便也可能不方便。
show()
并且hide()
还缓存初始display
值,所以如果你hide()
是一个元素然后show()
它,它会记住原始display
值是什么(这意味着它更灵活,因为你不需要具有不同类型display
值的元素的唯一可见类)。
您可以使用此类 CSS 类来最初隐藏页面上的元素,以便稍后使用jQuery.show()
. 无论如何jQuery.show()
,直接设置样式属性,因此浏览器不需要在每次分配时通过 CSS 声明查找类。所以我相信它会工作得更快,也更方便开发人员。顺便说一句,代码show/hide
也更具可读性。
只是比较
$username.hide();
至
$username.addClass('hidden');
似乎代码更具可读性,因此更易于维护,因此客户支持它更便宜......等等。
使用这两种技术中的任何一种都没有“无效”的地方。我相信这归结为您的偏好。jQuery 的显示/隐藏方法运行良好。需要考虑的几点
话虽如此,始终建议尽可能使用 CSS 解决方案。如果您像您说的那样创建带有显示块/无的类,则可以在整个应用程序中使用它们。所以我想这最终取决于你个人的选择。
我认为这些方法的不同之处在于,通过使用类来实现,你可以选择在未来的重新设计中如何隐藏。有一天,您可能想换入一个新的 CSS,其中隐藏实际上是穿过并变灰的。通过使用类,您可以保持表示和数据的分离。