Javascript 当内容大小更改时获取更新的div大小
我有一个包含几个内部div的div。在我的javascript/jQuery代码中,执行一个函数,该函数使用jQuery css()函数更改内部div的大小。在第一个函数之后的另一个函数中,我需要读取外部div的大小。它的大小应该随着内容大小的增加而增加 所以基本上看起来是这样的:Javascript 当内容大小更改时获取更新的div大小,javascript,jquery,internet-explorer-8,internet-explorer-9,Javascript,Jquery,Internet Explorer 8,Internet Explorer 9,我有一个包含几个内部div的div。在我的javascript/jQuery代码中,执行一个函数,该函数使用jQuery css()函数更改内部div的大小。在第一个函数之后的另一个函数中,我需要读取外部div的大小。它的大小应该随着内容大小的增加而增加 所以基本上看起来是这样的: resizeInnerDivs(); //...do something else... doSomethingWithOuterDivSize(); $('outer_div_selector').width()
resizeInnerDivs();
//...do something else...
doSomethingWithOuterDivSize();
$('outer_div_selector').width(); // this will force rendering to finish before executing the next line
doSomethingWithOuterDivSize();
当输入doSomethingWithOuterDivSize时,IE8和IE9仍然会获得外部分区的旧大小。另一方面,IE10、Firefox和Chrome会返回更新后的大小
我假设IE8和IE9没有重新计算新的大小。我尝试用outerDivsize()包装doSomethingWithOuterDivSize()使用setTimeout
调用进行编码>。如果我等待足够长的时间,我可以得到更好(但不一定正确)的大小值,这取决于超时时间
我可以强制重新计算外部div吗?如何在IE8和IE9中获得正确的值?您可能正在查找以下内容:
$('.yourClass').width();
$('someElement').width();
$('#someId').width();
$('any valid jQuery/CSS selector').width();
资源:
$.width()
将为您提供元素的计算宽度。我猜您有以下两种情况之一:
内部div不会影响IE上的外部div宽度
在尝试获取内部div之前,内部div尚未完成渲染
外部div的宽度,因此您仍然可以获得旧的宽度
您可以通过在控制台中手动查询宽度来检查这一点:
console.log($('outer_div_selector').width())
如果返回正确的(更新的)宽度,则存在问题#2。您可以这样解决它:
resizeInnerDivs();
//...do something else...
doSomethingWithOuterDivSize();
$('outer_div_selector').width(); // this will force rendering to finish before executing the next line
doSomethingWithOuterDivSize();
否则会出现CSS问题(例如,确保正确清除所有浮点)。您能提供一个JSFIDLE吗?您在函数中具体计算了什么?为什么不能使用普通的CSS流来重新调整div的大小呢?我的问题非常简单,真正的代码当然要复杂得多。但是,完整代码的具体细节与问题无关。我只想说:我需要根据外部div的高度触发一些操作。我不确定你所说的“正常CSS流”是什么意思。要解释一下吗?默认情况下,HTML/CSS会自动调整其元素的大小。只有当人们(不必要地)开始在任何地方使用绝对定位时,这种情况才会发生,您需要使用JavaScript“手动”调整大小。只要尽可能远离绝对定位(必要时修改设计),一切都很好。注意,但这是一个固定的要求。因此,我别无选择,只能在css生效后使用JavaScript来操作元素。不,这没有帮助。同样,我可以设置和读取内部div的尺寸,没有问题。我得到的是一个旧值的外部div。如果我使用height()、width()、css('height')或查看属性,这没有什么区别。重要的是尚未更新的值本身,而不是检索它的方法。