2012-02-25 15 views
0

異なりますjQueryの高さは()だから私は要素を持っているclientHeight

<div class="obj"> 
    <img width="896" height="595" src... /> 
    <div class="details"> 
    <h2>Title</h2> 
    <p>...</p> 
    </div> 
</div> 
<div class="obj"> 
    <img width="896" height="595" src... /> 
    <div class="details"> 
    <h2>Title</h2> 
    <p>...</p> 
    </div> 
</div> 

私は、彼らにこれを実行しています:

$objs = $('.obj'); 
$objs.each(function() { 
    console.log($(this).height()); 
} 

要素インスペクタでクロム、.OBJの高さに720(画像と同じ)です。しかし、私は各要素のためのコンソールで0を得る。

イメージはフローティングではないため、.objにはそのイメージがCSSで含まれています。私は何がうまくいかないのか、なぜjQueryが返されないのかは分かりません。

CSSと関連がありますか?

答えて

0

window.onloadイベントを処理して、すべてのイメージがロードされていることを確認します。

$(window).load(
    function() { 
    $objs = $('.obj'); 
    $objs.each(function() { 
     console.log($(this).height()); 
    } 
    } 
); 
+1

イメージは 'onload'ではなく' onready'でロードされます – gdoron

+0

'ready()'ハンドラはロードされているイメージとは関係ありません。 '$(window).load(...)'を使ってロードされていることを確認してください。 –

+0

私は訂正しました。ありがとう。 –

1

CSSに関連する可能性があります。 CSSを投稿することなく、知るのは難しいです。 (あなたは、objの高さは720で、画像と同じですが、画像の高さは595に設定されているとChromeから報告しています)

このjsfiddleは、どのように動作するかを示しています。

+0

私は '身長:自動; jQueryで0にオーバーライドしていたCSSで。確かに私には意味をなさないが、私は固定されている。 720/595号の問題はtypo btwでした。しかし、ありがとう! –

関連する問題