jQuery .hide()和.css(“ display”,“ none”)之间的区别


81

之间有什么区别

jQuery('#id').show() and jQuery('#id').css("display","block")

jQuery('#id').hide() and jQuery('#id').css("display","none")

Answers:


95

jQuery('#id')。css(“ display”,“ block”)

display属性可以有许多可能的值,其中有blockinlineinline-block,和更多

.show()方法不一定将其设置为block,而是将其重置为您定义的名称(如果有的话)。

在jQuery源代码中,您可以看到他们如何将display属性设置为“”(一个空字符串),以检查在进行任何jQuery操作之前它是什么:little link

另一方面,隐藏是通过进行的display: none;,因此您可以考虑.hide().css("display", "none")等效于某个点。

建议使用,.show()并且.hide()无论如何要避免任何陷阱(而且,它们要短一些)。


3
由于全面检查显示/隐藏性能,因此该方法相当慢。如果反复调用该方法,则可能要使用css方法。
Gqqnbig '16

33

show()和css({'display':'block'})之间的区别

假设您一开始就有这个:

<span id="thisElement" style="display: none;">Foo</span>

你打电话时:

$('#thisElement').show();

你会得到:

<span id="thisElement" style="">Foo</span>

而:

$('#thisElement').css({'display':'block'});

确实:

<span id="thisElement" style="display: block;">Foo</span>

所以,是的,有区别。

hide()和css({'display':'none'})之间的区别

与上面相同,但是将它们更改为hide()并显示':'none'......

另一个不同之处是,.hide()被调用时,display属性的值保存在jQuery的数据缓存中,因此,在.show()被调用时,将还原初始显示值!


6

是的,有在两者的性能差异: jQuery('#id').show()速度低于jQuery('#id').css("display","block")在前者的情况下额外的工作是从jQuery缓存中检索显示初始状态做的是不是一个二进制属性也可以是inlineblocknonetable,等类似hide()方法就是这种情况。

请参阅:http//jsperf.com/show-vs-addclass


2
当页面中使用过多的显示和隐藏时,性能将变得至关重要。
Aquasan

4

没有不同

没有参数,.hide()方法是隐藏元素的最简单方法:

$('。target')。hide(); 匹配的元素将立即隐藏,没有动画。这与调用.css('display','none')大致相同,不同之处在于display属性的值保存在jQuery的数据缓存中,以便以后可以将显示恢复到其初始值。如果元素的显示值为inline,则将其隐藏并显示,它将再次以inline显示。

节目也一样


除此之外,这.show()将设置适当的display属性,而您必须手动选择适当的属性,即.css()
Cerbrus 2012年

3

是,有一点不同。

jQuery('#id').css("display","block") 将始终设置要显示为块的元素。

jQuery('#id').show() will et是最初显示的显示类型,例如display:inline。

请参阅jQuery文档


请注意,这仅在更高版本的jQuery中适用。例如,1.3对此并不成立。
Troy Alford 2012年

2

您可以看一下源代码(这里是v1.7.2)。

除了动画,我们可以设置,这也是在内存中保存旧的显示风格(这是不是在所有情况下block,它也可以是inlinetable-cell...)。


1

参见http://api.jquery.com/show/

没有参数,.show()方法是显示元素的最简单方法:

$('。target')。show();

匹配的元素将立即显示,没有动画。这与调用.css('display','block')大致相同,不同之处在于display属性可以恢复为最初的状态。如果元素的显示值为inline,则将其隐藏并显示,它将再次以inline显示。


很好的解释..谢谢:)
Sashi Kant 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.