这是一个更昂贵的电话? 显示 – 隐藏dom节点或创建 – 删除dom节点
哪一个更贵?
- 显示隐藏的dom节点或
- 创建 – 删除dom节点
假设我们需要操作的节点只有1个dom或少数(少于5个),并且应用程序在桌面上运行。
对于少数,它甚至是否重要? 移动应用程序怎么样?
两者之间的差异对于少数几个元素来说无限小 – 它绝对可以忽略不计。
话虽如此, 除非你使用jQuery的.show()
和.show()
,否则通过CSS显示和隐藏元素会更快。 jQuery的.hide()
比隐藏元素的任何其他方法慢得多。 如果您想知道原因,请阅读“为什么.hide()
更慢?” 在我的答案的底部部分。
无论如何,您应该根据最适合您需求的方法做出决定。 如果您不再需要该元素,您也可以将其删除。 如果您只是暂时隐藏它或在某些条件下隐藏它,请显示/隐藏它。
但如果你想自己测试一下, 这里你去 🙂
为什么.hide()
变慢?
jQuery的.hide()
基本上与使用.css('display','none')
相同 , 只是它缓存了display
样式的前一个值,因此当你调用.show()
,你的元素将被正确地恢复看起来和它完全一样。 如果它有display:inline
,它会在重新显示时显示。 如果它有display:block
,它将display:block
。 这非常有用。
这是一个例子:
假设我们有一个id =“myDiv”的div,它的外观文件样式为display:inline
。 我们想要隐藏它。
使用.css
方式,我们会这样做:
$('#myDiv').css('display','none');
然后在某个时候,你的一位开发人员希望在某些条件下再次显示它。 他不知道display
属性应该是什么,因为css位于某个外部文件中。 大多数开发人员默认display:block
,如下所示:
$('#myDiv').css('display','block');
但是在这种情况下,我们会得到一种完全不同的风格,因为它最初是inline
。 一个聪明的开发人员将没有问题找出问题所在,但并非所有开发人员都聪明:)
使用.show()
和.show()
,这成为一个非问题。 我们不关心过去的风格。 我们只是希望它回到原来的位置,而这正是它所做的。