2012-09-06 72 views
0

我有一個與動態內容(圖像和文字)的股利。然後我需要計算div的高度並對它做些什麼。如何在動態添加內容之後計算div的高度?

但是,它目前正在計算內容添加前div的高度。

有沒有人有一個解決的辦法?

$('#results').find('article').addClass(result); // add class to entire section 
$('#results article').find('.details h1 span').html(title); // add title 
$('#results article').find('.details p').html(message); // add message 

var windowHeight = $('#results').find('article').innerHeight(); 
+1

是否內容包含圖像? –

回答

6

您可能在您的內容中有圖像。你必須等待他們負載:

var $results = $('#results'), 
    $article = $results.find('article'), 
    deferreds = []; 

$article.addClass(result); // add class to entire section 
$article.find('.details h1 span').html(title); // add title 
$article.find('.details p').html(message); // add message 

$results.find('img').each(function() 
{ 
    var deferred = $.Deferred(); 

    deferreds.push(deferred); 

    this.onload = function() { deferred.resolve(); } 
}); 

$.when.apply($, deferreds).then(function() 
{ 
    var windowHeight = $article.innerHeight(); 
}); 

此方法使用jQuery的Deferreds,這使得它超級容易跟蹤所有load事件。

+0

它會是'this.onload'嗎? – jeremy

+0

@Nile - 當然。感謝您的發現。 –

+0

抱歉,不得不打勾,因爲當我試圖調用'windowHeight'它說'未定義',有什麼建議嗎? – muudless

0

如果這對於尚未加載的圖像沒有問題,那麼您可能只需自己觸發佈局,以便獲得所需的尺寸。

瀏覽器通常不會佈局新內容,直到您的腳本完成(並且確定您已完成更改DOM)。您可以通過向DOM請求瀏覽器知道需要佈局的相關維度來觸發腳本中的佈局。

有關將觸發佈局的屬性列表,請參閱此文章http://gent.ilcore.com/2011/03/how-not-to-trigger-layout-in-webkit.html

0

可以觸發代碼,以查找高度的所有動態數據得到加載後,使用下面的代碼

$(window).load(function(){ 

    var divHeight = $('#yourDivId').height() 
} 

希望這將有助於