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

时间:2012-11-26 10:01:07

标签: javascript jquery css

之间有什么区别吗?
jQuery('#id').show() and jQuery('#id').css("display","block")

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

7 个答案:

答案 0 :(得分:90)

  

的jQuery( '#标识')。CSS( “显示”, “块”)

display属性可以包含许多可能的值,其中包括blockinlineinline-blockmany more

.show()方法并未将其设置为block,而是将其重置为您定义的方式(如果有的话)。

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

另一方面,隐藏是通过display: none;完成的,因此您可以将.hide().css("display", "none")视为相当于某一点。

建议最后使用.show().hide()以避免任何问题(加上,它们会更短)。

答案 1 :(得分:32)

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()时,显示属性的值保存在jQuery的数据高速缓存中,因此在调用.show()时,将恢复初始显示值!

答案 2 :(得分:6)

是的,两者的表现有所不同: jQuery('#id').show()jQuery('#id').css("display","block")慢,因为在前一种情况下,要从jquery缓存中检索初始状态需要额外的工作,因为display不是二进制属性,它可以是inline,{{ 1}},blocknone等 与table方法类似。

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

答案 3 :(得分:4)

no difference

  

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

     。

$( '目标')隐藏();         匹配的元素将立即隐藏,没有动画。这大致相当于调用.css('display',   'none'),除了显示属性的值保存在   jQuery的数据缓存,以便稍后可以将显示恢复到其中   初始值。如果元素的显示值为内联,则为   隐藏和显示,它将再次显示内联。

相同的节目

答案 4 :(得分:3)

是的,有区别。

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

jQuery('#id').show()将是它最初的显示类型,显示:内联,例如。

请参阅Jquery Doc

答案 5 :(得分:2)

您可以查看source code(此处为v1.7.2)。

除了我们可以设置的动画之外,这还会在内存中保留旧的显示样式(在所有情况下都不是block,它也可以是inlinetable-cell, ...)。

答案 6 :(得分:1)

请参阅http://api.jquery.com/show/

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

$( '目标')显示();

匹配的元素将立即显示,没有动画。这大致相当于调用.css('display','block'),除了display属性恢复到最初的状态。如果元素的显示值为内联,则隐藏并显示,它将再次以内联方式显示。