Javascript 以slideDown()的方式计算元素高度

Javascript 以slideDown()的方式计算元素高度,javascript,jquery,Javascript,Jquery,您是否注意到,通过使用jquery的slideDown,即使在具有动态内容的元素上,您也总能获得受影响元素的完美高度。至少对我来说,仅仅通过设置css高度值的动画是不可能做到的。主要是因为我无法知道在动态内容AJAX更新期间,元素的高度是如何显示的:无改变 由于我一直在处理一些自定义控件,所以我确实需要这种功能来像slideDown那样计算内容。如果要插入一个新的动态加载内容,这意味着您在内存中有该元素,因此您可以引用它并知道它的高度。你只需要读取它的高度,或者可能是外光,然后按这个量滑动 编辑

您是否注意到,通过使用jquery的slideDown,即使在具有动态内容的元素上,您也总能获得受影响元素的完美高度。至少对我来说,仅仅通过设置css高度值的动画是不可能做到的。主要是因为我无法知道在动态内容AJAX更新期间,元素的高度是如何显示的:无改变


由于我一直在处理一些自定义控件,所以我确实需要这种功能来像slideDown那样计算内容。

如果要插入一个新的动态加载内容,这意味着您在内存中有该元素,因此您可以引用它并知道它的高度。你只需要读取它的高度,或者可能是外光,然后按这个量滑动

编辑

只需为隐藏项和overflow:hidden指定一个0的高度,这样它里面的内容就不会被隐藏,并且它将保持其高度


可以在将动态内容附加到元素后尝试此操作

$(element).height();
$(element).outerHeight();//if you need margin to be included pass true to outerHeight method

我刚试过这个,但碰巧不是真的。似乎驻留在具有display的元素中的任何内容:none的高度值为零。如果你有不同的经验,请分享一个例子。display none对我来说很重要,但我想我必须重构代码我不知道你的完整代码和结构,所以我不知道,但有时候按照我的建议做比较简单,或者将元素容器隐藏在某个位置:绝对;左:-99999像素;例如,然后将其放回原始位置。还有很多其他方法可以实现同样的效果,特别是在使用jQuery之后。我实际上按照您提出的方式完成了控件,并且它的操作非常完美——视觉上就是这样。另一方面,我真的很喜欢slideDown在显示器上的工作方式:隐藏元素和slideUp解除元素的锁定,这与我们的解决方案不同,我们的解决方案中所有东西都保持不变。这就是为什么我担心如果建筑中的东西变得拥挤会发生什么。我甚至试着理解jquery开发版本中的slideDown和slideUp-不走运:}你的意思是我在将动态添加的元素附加到动画父元素之前计算每个元素的高度?我的意思是在附加动态元素之后计算高度。检查此示例此示例中的动态元素的行为就像它们一样没有任何高度,只是因为它们的父级具有display:none。在这种情况下,你如何计算身高?