这是一个更昂贵的电话? 显示 – 隐藏dom节点或创建 – 删除dom节点

哪一个更贵?

  1. 显示隐藏的dom节点或
  2. 创建 – 删除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() ,这成为一个非问题。 我们不关心过去的风格。 我们只是希望它回到原来的位置,而这正是它所做的。