Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当内容大小更改时获取更新的div大小_Javascript_Jquery_Internet Explorer 8_Internet Explorer 9 - Fatal编程技术网

Javascript 当内容大小更改时获取更新的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()

我有一个包含几个内部div的div。在我的javascript/jQuery代码中,执行一个函数,该函数使用jQuery css()函数更改内部div的大小。在第一个函数之后的另一个函数中,我需要读取外部div的大小。它的大小应该随着内容大小的增加而增加

所以基本上看起来是这样的:

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')或查看属性,这没有什么区别。重要的是尚未更新的值本身,而不是检索它的方法。