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(); 
4

3 に答える 3

7

コンテンツに画像が含まれている可能性があります。それらがロードされるまで待つ必要があります:

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 のDeferredsloadを使用しているため、すべてのイベントを簡単に追跡できます。

于 2012-09-06T01:04:51.030 に答える
0

まだロードされていない画像でこれが問題にならない場合は、必要なサイズを取得できるように、自分でレイアウトをトリガーする必要がある場合があります。

通常、ブラウザーは、スクリプトが終了するまで新しいコンテンツをレイアウトしません (DOM の変更が確実に終了するまで)。ブラウザーがレイアウトを必要とすることを認識している関連するディメンションを DOM に要求することにより、スクリプトでレイアウトをトリガーできます。

レイアウトをトリガーするプロパティのリストについては、この記事http://gent.ilcore.com/2011/03/how-not-to-trigger-layout-in-webkit.htmlを参照してください。

于 2012-09-06T01:13:23.270 に答える