我总是认为有显示的元素:none CSS样式返回0为height()和width()。
但在这个例子中:
HTML
<div id="target" style="display:none;"> a </div>
CSS
alert($("#target").height());
他们不:http://jsfiddle.net/Gts6A/2/
怎么来的?我见过0回来很多次在过去。
解决方法
如果一个元素的
offsetWidth
的0(jQuery考虑这个“隐藏”),
checked here,那么它试图找出什么高度应该是。它
sets以下
properties对元素通过
jQuery.swap()
在检查期间:
> position:“absolute”
> visibility:“hidden”
> display:“block”
然后它通过getWidthOrHeight(...)
获得高度,如果必要,通过augmentWidthOrHeight(...)
添加边框/填充,取决于框模型,并将所有上述属性恢复为之前的值。
所以基本上它采取的元素,显示它从文档的流程,获得高度,然后再次隐藏,所有之前的UI线程更新,所以你从来没有看到这种情况发生。它这样做所以.height()
/.width()
工作,即使是目前隐藏的元素,只要他们的父母是可见的…所以你可以运行.height()
/.width()
,而不做显示/隐藏技巧它在代码中做,它的处理在.height()
和.width()
。