2011-11-12 7 views
1

要素をに設定した場合、表示:なしjquery - 表示された要素の高さを測定する方法:なし?

Firebugの要素が持っている私に語った:
マージントップ/ボトム:20ピクセル
パディングトップ/ボトム:20ピクセル
高さ:-22px

要素が設定されている場合〜ディスプレイ:ブロック高さの変更:

高さ:73px

私はJQuery経由で-22pxを取得する必要がありますが、ディスプレイがどのように設定されていても、常に73pxを取得しています。 -22pxを入手する方法はありますか?

ありがとうございます!

+0

高さマイナスを表示しているファイヤーバグです。 – jQuerybeast

+0

まだ私の位置は22pxでオフです。マイナスを気にしないで、全体の位置を調整するために22ピクセルを取得する必要があります。 – frequent

答えて

2

jQueryを使用しないでください。要素がある場合は(getElementById())、そのoffsetHeightを取得してください。それは0pxでなければなりません - 負の高さのようなものはありません。FirebugはoffsetHeightをとり、margin/border/paddingを減じていると思います...

jQueryは実際の高さ見えるように、「目に見えるようにする、高さをつける、もう一度見えなくする」のようなことをします。

+0

奇妙なことに、私が配置しようとしている要素は、-22pxだけ離れています。だから私は多分_display:none_と_height:-22px_でこのdivのためだと思った。 – frequent

+0

offsetHeightは私の日を作った。ありがとう! – frequent

+0

これは私がjQueryなどに反対している理由ですあなた自身のコードを書くときには、あなたがしたいことを*正確に*実行するのがずっと簡単です。 –

0

私は周りを見渡して、IMHO、問題は実際のdiv内にあります。さらなる調査をしてください。

<div id='testDiv' style='padding:20px; margin:20px; display:none; border:1px solid red; ' ></div> 

alert($('#testDiv').height());   // 0 
alert($('#testDiv').innerHeight());  //40 
alert($('#testDiv').outerHeight());  //42 <======= 

$('#testDiv').css('display','block'); 

alert($('#testDiv').height());   // 0 
alert($('#testDiv').innerHeight());  //40 
alert($('#testDiv').outerHeight());  //42 <======== 
+0

ok。これをもう一度見てください。どうも – frequent

関連する問題