隐藏的div高度(改变我的建议)

好的,我将在这里回答某人的问题,关于他们的脚本无法正常工作的原因。 他们将内容加载到隐藏的div中,然后获得高度,以便他们可以为包装div设置动画。 但我总是试着测试我提供的代码。 所以我做了这个演示来向他们certificate。

那么,嗯,我进入了暮光之城还是我现在正在做梦? 捏自己

我在Firefox,IE和Chrome中尝试过该演示,两种方法都返回相同的值。 Firebug说零! 我重新启动了我的计算机,我甚至更改了代码(删除了高度函数)并尝试使用jQuery 1.3.2并且它仍然有效! 我知道隐藏的元素用于返回零值。 即使这个SO答案也给出了我的建议!

所以我想我的问题是……我错过了什么或者我们给出了不好的建议吗?

查看jQuery 1.4.2和1.3.2源代码,当您在隐藏元素上调用width()height()时,它实际上会自动执行此操作。 它设置以下属性:

 { position: "absolute", visibility: "hidden", display:"block" } 

然后它获取宽度/高度,并恢复属性的旧值。

所以没有必要自己更改属性–jQuery会为你处理它。

<编辑>
这将允许您获取隐藏元素的尺寸。 但是,当元素包含在另一个隐藏元素中时,它将无法工作 – 您将获得高度为0.在这种情况下,您需要另一个解决方案,可能就像这个答案 。


以下是1.4.2源代码的相关位:

 cssShow = { position: "absolute", visibility: "hidden", display:"block" }, //[undocumented jQuery.css function which is called by .height() and .width()] css: function( elem, name, force, extra ) { if ( name === "width" || name === "height" ) { var val, props = cssShow, .... function getWH() { ... this function gets the actual width/height into the variable val } if ( elem.offsetWidth !== 0 ) { getWH(); } else { jQuery.swap( elem, props, getWH ); } return Math.max(0, Math.round(val)); } return jQuery.curCSS( elem, name, force ); }, // A method for quickly swapping in/out CSS properties to get correct calculations swap: function( elem, options, callback ) { var old = {}; // Remember the old values, and insert the new ones for ( var name in options ) { old[ name ] = elem.style[ name ]; elem.style[ name ] = options[ name ]; } callback.call( elem ); // Revert the old values for ( var name in options ) { elem.style[ name ] = old[ name ]; } } 

我遇到了隐藏元素宽度的同样问题,所以我写了这个插件调用jQuery Actual来修复它。 而不是使用

 $('#some-element').height(); 

使用

 $('#some-element').actual('height'); 

将为隐藏元素或元素提供正确的值具有隐藏的父元素。

你也可以使用

 // get hidden element actaul width $( '.hidden' ).actual( 'width' ); // get hidden element actaul innerWidth $( '.hidden' ).actual( 'innerWidth' ); // get hidden element actaul outerWidth $( '.hidden' ).actual( 'outerWidth' ); // get hidden element actaul height $( '.hidden' ).actual( 'height' ); // get hidden element actaul innerHeight $( '.hidden' ).actual( 'innerHeight' ); // get hidden element actaul outerHeight $( '.hidden' ).actual( 'outerHeight' ); 

完整文档请看这里 。 页面中还有一个演示包含。

希望这有帮助:)

您还可以使用javascript的scrollHeight属性。

 $("#id_element").attr('scrollHeight') 
 $('.hidden-element').get(0).height; 

给出DOM元素的高度,DOM元素也是为隐藏元素设置的