2014-01-22 85 views
2

我將div1追加到div2中,然後獲取div2的高度()。如果我在調用height()之前等待50ms,我會得到不同的高度。好像我在瀏覽器完成渲染div1之前獲得高度。任何人都有一個想法,我可以如何解決這個問題。我添加了很多元素,並且需要在每個元素之後檢查高度,因此每個元素之間的延遲看起來可能會加起來很大的延遲。Element.height()不正確,因爲瀏覽器還沒有完成渲染?

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

where as... 

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

http://stackoverflow.com/questions/19737762/how-to-determine-when-a-browser-has-的可能的複製完成繪畫插入元素 –

+0

我有一個遊戲相同的問題,你需要延遲加載/ documentready。 – ZiTAL

+0

您需要等待元素完成加載,或者您需要找出事先未確定其高度的原因。在字體渲染(如Typekit或Google字體)的情況下,可以做的不多,只能等待。對於您的內容,您可以將高度值設置爲和其他元素,以便瀏覽器在繪製dom之前知道它們的尺寸。 –

回答

1

您可以要求強制佈局的某些屬性。例如,如果您請求這些屬性:

  • 的offsetTop
  • offsetLeft
  • offsetWidth
  • 的offsetHeight
  • scrollTop的/左/寬/高
  • clientTop /左/寬/高

瀏覽器將在返回值之前佈局該元素。如果您的佈局複雜,則可能需要在多個對象上請求屬性才能正確佈置多個項目。

請參閱this answerthis article瞭解更多詳情和工作演示的概念。

0

把你的代碼中

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

,將工作