2013-12-19 25 views
2

我正在使用AJAX調用動態地向頁面添加HTML塊。在添加到頁面後,我需要知道元素的高度,但我無法得到準確的結果,因爲添加的元素需要一段未知的時間才能呈現。有什麼方法可以確保某個元素在頁面上完成渲染後運行一些JS。我如何確定HTML塊的完全呈現時間

+0

可能重複[等待,直到前面的.append()完成(http://stackoverflow.com/questions/1539841/wait -untill-previous-append-is-complete) – abc123

+1

也許負責渲染的代碼可能會設置一些標誌。 – toniedzwiedz

+0

這不完全是猶太教,但會在附加的HTML工作之後添加'

2

的DOM是同步操作,因此,HTML是 「完全渲染」在您撥打appendChild/append/innerHTML/etc時返回。

雖然不同步發生的是資源加載(即圖像)。因此,儘管您可以在插入內容後檢查新插入內容的渲染高度,但高度將不包含任何圖像的高度。

要解決這個問題,你可以明確地指定圖像– <img width=... height=...> –的寬度和高度,或者你可以監聽每個新插入的圖像load事件。每次事件觸發時,重新計算元素的高度。 (請注意,這將再次爲每個新的形象出現。)喜歡的東西:

$('#somediv').html('... <img src="..."> ...'); // or whatever 
$('#somediv img').on('load', function() { 
    var h = $('#somediv').height(); 
    // ...and do what you will with the height 
}); 
相關問題