Javascript:无法获得新创建元素的高度

时间:2011-11-22 02:14:16

标签: javascript jquery dom

用新元素(e.i. body.append(html))更新DOM后,我无法立即获得新更新元素的高度(例如body.height())。部分修复是设置时间间隔并在时间间隔结束时获得高度(setTimeout(“alert(body.height)”,500))。

有更好的想法吗?就像DOM完全更新后的回调一样?谢谢。

编辑: 这只发生在背景中有很多事情发生时(即首次加载页面时)。如果没有其他任何处理,似乎页面更新几乎是即时的。我需要的是一个回调,或者是DOM重组的指标!

编辑: 问题在于浏览器被其他进程“分心”,这使得浏览器在追加元素后无法立即更新。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

超时方法有效,因为渲染引擎有机会在那里显示新元素,给它一个更改来渲染它,从而为它指定一个高度。

您可以将超时设置为0并仍然具有相同的效果。

答案 1 :(得分:0)

jQuery为我工作fine

在jsfiddle演示中,我输入了下一个代码:

$(function(){
    var jTest = $('#test');

    console.log('The height:',jTest.innerHeight(),jTest.height()); //Show me 'The height: 20 20'

    jTest.append('<div><br/>How are you?</div>');
    console.log('The height:',jTest.innerHeight(),jTest.height()); //Show me 'The height: 60 60'

});

除非您的意思是仅使用javascript解决方案,否则请使用jsFiddle演示来显示您的错误。