2012-02-21 3 views
5

$(document).ready(function(){ /*code*/ });にラップされたコードがありますが、1行を除いてすべて正常に動作します。上記のコードは正常に動作し、その下のコードはうまく動作しますが、私のコンソールには何のエラーもありません。

$('.main-right.category').height($('.footer').height() + $('.main-right.category').height()); 

これは起動しません。ただし、ページをロードした後に、開発者コンソールに正確に貼り付けてEnterキーを押すと機能します。すべての要素はページロード時に存在します(つまり、javascriptで動的に構築されているわけではありません)。 chrome、firefox、IEでも同じ結果になります。

アイデア?

編集:私のCSSがJavaScriptの前にロードされていることを追加してください。この同じjavascriptファイルの他のCSS関連の調整もうまくいきました。

また、I console.log $( '。main-right.category')。height()と$( '。footer')。height()は、期待していたようなゼロの整数値。

+0

コンソールにエラーはありませんか?あなたはページへのリンクを投稿できますか? –

+1

残りのコードがなければ、私が考えることのできる唯一のことは、このステートメントが実行されるときに、対象とするDOM要素がDOMにロードされていないことです。もちろん、コンソールに接続するときには、このステートメントが動作します。 –

+0

投稿するjsFiddle? – j08691

答えて

5

準備イベントが発生します。これは、すべてのアセット(css、javascript、images、...)がすべてロードされたときに発生するロードイベントとは異なります。

コードを実行すると、高さを取得しようとしている要素の高さが既に計算されているため、何も起こっていないようです。

コンソールでコードを実行すると、すべてが読み込まれ、動作が期待どおりになります。

ロードイベントにバインドするには、メソッドをチェックします。

+0

このリンクは適切ではありません。http://api.jquery.com/load-event/ –

+0

$(window).loadは機能しましたが、私はその理由を理解していません。 $(document).ready内で動作しなかったコードの行の上に、I console.log $( '。main-right.category')。height()と$( '。footer')。 ()は、私が期待しているようなゼロ以外の整数値と、開発者コンソールから同じコード行を実行するのと同じ値を与えます。 – LOLapalooza

0

私は通常と高さを設定:DOMはと協力する準備ができたときに

var height = $('.footer').height() + $('.main-right.category').height(); 
$('.main-right.category').css('height',height+'px'); 
+0

それもやってみた、うまくいかなかった。奇妙なことに、もし私がconsole.log $( '。main-right.category')。height()と$( '。footer')。height()私が期待するように。 – LOLapalooza

+0

@RickMこれは、コンソールを使用してコードを挿入すると、ページの読み込みが完了したが、 'document.ready'イベントが発生したときに読み込みが完了していないためです。 'window.load'イベントが発生すると、ドキュメント内のすべてのアセットがロードされます。 – Jasper

+0

@ジャスパー洞察力に感謝します。私は、javascriptファイルにconsole.log(var)を入れてみると、実行時にvarが何であったとしてもログに記録されます。 – LOLapalooza

3

$ DOM-structureが完全に利用可能なときに起動します。この時点では、レンダリングは一般的に終了していないため、要素のサイズが不明で、height()が誤った値を返します。

$(window).load()を代わりに使用してください。

0

セレクタをデバッグして要素の高さを表示するには、consoleを使用する必要があります。

$(document).ready(function() { 

    var $footer = $('.footer'); 
    var $category = ('.main-right.category'); 

    console.log($category, $footer); 
    console.log($category.height(), $footer.height()); 
    console.log('New height =', ($category.height() + $footer.height())); 

}); 
関連する問題