2010-06-23 113 views
4

我想知道是否有任何方法可以以像素为单位获取div高度,尽管其高度较早设置为100%高度。
这是必需的,因为div内容是动态的,所以div高度根据内容本身具有不同的值。尽管其高度设置为100%,但以高分辨率获取div高度

[编辑] Div默认是隐藏的。

我需要以像素为单位获取div高度以供后期操作(平滑滚动将为div完成)?
有没有办法做到这一点?

+0

你使用jQuery吗?或者你想要一个纯粹的JS解决方案? – 2010-06-23 11:40:08

+0

是的,我使用jQuery。 – Ahmed 2010-06-23 11:43:10

回答

10

既然你标记的jQuery,使用

$("#myElement").height(); 

http://api.jquery.com/height/

对于纯醇” JavaScript中,你可以使用element.clientHeightelement.offsetHeight,这取决于哪一个适合您的需求。


由于DIV是隐藏的,你将不得不 .show()它调用 .height()之前,你可以再次隐藏它立刻:

var $myEl = $('#myElement').show(); 
var height = $myEl.height(); 
$myEl.hide(); 
+0

这不起作用。 Div默认是隐藏的。 – Ahmed 2010-06-23 11:46:12

+0

element.clientHeight或element.offsetHeight返回“0”,因为div默认为隐藏。 – Ahmed 2010-06-23 11:47:22

+2

@Ahmed:隐藏的元素没有“像素高度”,因此如果不先显示元素,则无法获得像素高度,然后再隐藏它。如果在显示和获取高度值后隐藏,显示将不会更新以显示元素。 – 2010-06-23 11:53:28

5
theDiv.clientHeight 
1

您可以使用height()

$("#divInQuestion").height(); 
1

你可以使用.height()功能:

$('#divid').height() 
0

在缓慢的浏览器上,显示/隐藏方法可能会导致闪烁(尽管计算机必须非常慢)。所以如果你想避免这种情况,给div一个不透明度:0 - 甚至可能是一个位置:绝对,所以它不推动内容。所以扩展以前的代码:

var $myEl = $('#myElement').css({"opacity": "0", "position": "absolute"}).show(); 
var height = $myEl.height(); 
$myEl.hide().css({"opacity": "", "position": ""}); 

但是再次。这可能是矫枉过正。