82

有没有区别

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

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

7 回答 7

97

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

该属性可以有许多display可能的值,其中有blockinlineinline-block等等。

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

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

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

建议使用.show()并且.hide()无论如何避免任何陷阱(另外,它们更短)。

于 2012-11-26T10:04:01.680 回答
34

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() 和 display':'none'......

另一个区别是 当.hide()被调用时显示属性的值是保存在jQuery的数据缓存中的,所以当.show()被调用时,会恢复初始显示值!

于 2012-11-26T10:17:10.760 回答
6

是的,两者的性能有所不同: jQuery('#id').show()jQuery('#id').css("display","block")以前的情况要慢一些额外的工作是为了从 jquery 缓存中检索初始状态,因为 display 不是二进制属性,它可以是inline, block, none,table等类似方法就是这样hide()

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

于 2013-02-28T21:56:56.857 回答
4

没有不同

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

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

节目也一样

于 2012-11-26T10:03:48.717 回答
3

是,有一点不同。

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

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

请参阅Jquery 文档

于 2012-11-26T10:05:41.710 回答
2

你可以看看源代码(这里是v1.7.2)。

除了我们可以设置的动画外,这还保留了旧的显示样式(不是所有情况block,也可以是inline,,table-cell...)。

于 2012-11-26T10:03:52.547 回答
1

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

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

$('.target').show();

匹配的元素将立即显示,没有动画。这大致相当于调用 .css('display', 'block'),除了 display 属性恢复到最初的样子。如果一个元素的显示值为 inline,然后被隐藏并显示,它将再次被显示为 inline。

于 2012-11-26T10:06:58.107 回答