有人在show()之前调用hide()的原因吗?

时间:2013-05-15 11:03:08

标签: jquery

为什么要在show()之前调用hide()?在我用方法链进行优化之前,我想知道这一点。

function ShowSomething() {
  jQuery("something").hide();
  jQuery("something").show();
}

4 个答案:

答案 0 :(得分:4)

调用hide()时,会在调用display时存储该元素的show()的初始值,将该初始值放回原位。如果未设置初始值,则show()将设置display:block

因此,如果一个元素最初是display:inline,但是(假设).css("display","none")在该元素上被调用,它将被隐藏而不保存初始属性。当我们再次show()此元素时,它将被赋予display:block - 而不是inline的初始值,如果我们使用hide(),它就是给出的。

总结一下:hide()将保留原始display值,以便show()使用

来源:jQuery hide()文档

答案 1 :(得分:3)

如果链接的话输出没有区别,除了jQuery实际上会在非链接版本上执行两次DOM查找。

就性能而言,非链接实际上要慢24%,如下所示:

jsperf

查看我的JSPerf

答案 2 :(得分:0)

.hide

  

.hide()会立即触发,并会覆盖动画队列   没有指定持续时间或持续时间为0.

因此,如果动画已经在队列中,它将被删除,然后插入.show()。对于从不存在到存在的某些动画,它也可以(视觉上)有用。你可以将它们连在一起,它没有任何区别。

答案 3 :(得分:0)

当您有一系列需要一次显示一个元素的元素时,通常会出现这种情况。首先,您使用某个类隐藏所有元素,然后显示所需的元素。