2012-06-20 6 views
13

jQueryを使用している間に問題に遭遇しました。 .ready内の要素の高さを取得しようとすると、私は常にゼロを与えられます。私は高さチェックの周りのsetTimeout()と遅延のコードを入れた場合jquery .readyと要素の高さ

$(function() { 
    $('#my-elem').height() // Always gives me zero. 
}); 

(たとえば.5sの)その後、高さは正しく私に戻って報告されます。スタイルがまだ適用されていない可能性があるので、これは推測していますか?

私がこの問題に遭遇した唯一の解決策は、ゼロ以外になるまで要素の高さをポーリングするために間隔を使用することですが、これは私にとっては過度のことです。より良い方法がありますか?

+0

#my-elemはdiv、span、imgまたは何ですか –

+0

要素は非表示になっていますか? docreadyより少し遅れて起動する '$(window).load()'イベントを試してください。 – elclanrs

+0

可能であれば、HTMLとフィドルを見せてください。 – Starx

答えて

21

document.readyイベントは、HTML DOMがJavaScriptを使用してアクセスする準備ができていることを示しますが、は、要素がすでににレンダリングされているわけではありません。実際に

、それはready背後全体シェバングだ:それはあなたがロードを完了するためにページを待つことなく、ドキュメントのHTML DOM を操作開始するための手段です。 document.readyに、あなたの要素がまだページに表示されていないと考えるのは安全です。

要素がまだレンダリングされていない場合、ブラウザ/ JavaScriptはどのように解決の高さを知ることができますか? .height()document.readyにゼロを与えるかもしれません。レイアウトからボックスの寸法を引くことに関しては、readyの代わりにloadまで待つことがおそらく最善です。

+0

私はほとんど毎回そうではないにしても_ほとんどないと思う_まれな場合_ –

+0

私は経験から話していましたが、より一般的であると言い換えることができます。 –

関連する問題