用新元素(e.i. body.append(html))更新DOM后,我无法立即获得新更新元素的高度(例如body.height())。部分修复是设置时间间隔并在时间间隔结束时获得高度(setTimeout(“alert(body.height)”,500))。
有更好的想法吗?就像DOM完全更新后的回调一样?谢谢。
编辑: 这只发生在背景中有很多事情发生时(即首次加载页面时)。如果没有其他任何处理,似乎页面更新几乎是即时的。我需要的是一个回调,或者是DOM重组的指标!
编辑: 问题在于浏览器被其他进程“分心”,这使得浏览器在追加元素后无法立即更新。我该如何解决这个问题?
答案 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演示来显示您的错误。