jQuery是如何实现hide()和show()方法的?

51

他们是设置 display: none 还是 visibility: hidden

我很确定 display: none 会把元素从正常布局中移除,而 visibility: hidden 只是隐藏元素但仍有保留空间。

我该下载未打包版本并研究它,还是有人可以快速回答?

2个回答

73

它使用display属性。

编辑:根据John Sheehan在这个答案的评论,我同意:

你应该查看未打包的源代码,以便熟悉它

编辑2:评论中提到使用Firebug发现发生了什么。实际上,我去了jQuery文档,并使用Safari Web检查器查看了hide()演示,以确保我的答案。


5
没问题,你应该去查看未打包的源代码,以便熟悉它。 - John Sheehan
2
此外,使用FireFox的FireBug工具,并观察在使用jQuery时元素实时发生的变化是很有帮助的(至少我发现是这样的)。 - chadmyers
1
点赞 - 我总是使用未打包的代码进行开发,以防需要调试(实际上,是“当”需要调试时)。我会使用已打包的代码进行发布。 - paxdiablo
谢谢,我从未查看过未打包的版本。不过我很快可能会。我确实使用Firebug来查看更新的DOM,你是正确的。非常感谢! - alex
1
值得注意的是,Jquery记住了缓存中之前的内容。因此,display: flex; 将变为 display: none;,然后再变成 display: flex;。但是,如果一开始它是隐藏的,Jquery 就不知道该如何将其设置回来,会使用 block。遗憾的是,在 HTML、CSS 或 JavaScript 中都没有办法给 Jquery 提供提示,让它做正确的事情 :-( - Ralph Bolton

2
它使用显示(display)。对于这种类型的事情,您可以使用Firebug来实际检查DOM发生了什么。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接