jquery -how用display:none来测量元素的高度?

时间:2011-11-12 11:22:15

标签: jquery height

如果我将元素设置为 display:none

Firebug告诉我元素有:
  margin-top / bottom:20px
  padding-top / bottom:20px
身高:-22px

如果元素设置为 display:block 高度更改为:

身高:73px

我需要通过Jquery检索-22px,但无论设置什么显示,我总是得到73px。有没有办法获得-22px?

谢谢!

2 个答案:

答案 0 :(得分:2)

不要使用jQuery。如果您有该元素(可能包含getElementById()),则只需获取其offsetHeight。这应该是0px - 没有负高度这样的东西,我认为只是Firebug采用offsetHeight并减去margin / border / padding ......

我几乎可以肯定jQuery会假设你想要看到的实际高度,所以它会做“让它变得可见,达到高度,让它再次看不见”。

答案 1 :(得分:0)

我摆弄着,恕我直言,问题在于实际的div。做进一步的调查。

<div id='testDiv' style='padding:20px; margin:20px; display:none; border:1px solid red; ' ></div>

alert($('#testDiv').height());          // 0
alert($('#testDiv').innerHeight());     //40
alert($('#testDiv').outerHeight());     //42  <=======

$('#testDiv').css('display','block');

alert($('#testDiv').height());          // 0
alert($('#testDiv').innerHeight());     //40
alert($('#testDiv').outerHeight());     //42  <========