Element.height()不正确,因为浏览器还没有完成渲染?

时间:2014-01-22 16:55:52

标签: javascript jquery

我将div1附加到div2然后获取div2的height()。如果我在调用height()之前等待50ms,我会得到不同的高度。看起来我在浏览器完成渲染div1之前得到了高度。任何人都知道如何解决这个问题。我添加了很多元素,并且需要在每个元素之后检查高度,因此在每个元素之间有一个延迟似乎可能加起来相当延迟。

$(div2).append(div1);
console.log(div2.height()) // 295

where as...

$(div2).append(div1);
window.setTimeout(function(){
    console.log(div2.height()) // 245
},50)

2 个答案:

答案 0 :(得分:1)

您可以请求强制布局的某些属性。例如,如果您请求以下任何属性:

  • 的offsetTop
  • offsetLeft
  • offsetWidth
  • 的offsetHeight
  • scrollTop的/左/宽度/高度
  • clientTop /左/宽度/高度

浏览器将在返回值之前布局该元素。如果您的布局很复杂,则可能需要在多个对象上请求属性才能获得多个项目的正确布局。

有关此概念的更多详情和工作演示,请参阅this answerthis article

答案 1 :(得分:0)

将您的代码放入

$( document ).ready(function() {
 // your code
});

它会起作用