2013-01-02 4 views
7

この投稿はthis oneに関連しています。 こちらもお読みください。 :-)jqueryで実際の高さではなく、要素の目に見える高さを取得します

私がリンクしている記事では、divの目に見える高さが別のdivの目よりも大きければ、私の問題の解決策はリンクのターゲットを変更することになると思いました。私のレイアウトでは、私が参照しているすべてのdivは、高さが1100pxです。しかし、それは私が得たいものではありません。私は、実際の高さではなくビジターに現在表示されているdivの高さをスクリプトで取得したいと思います。 jQueryを使ってそれを行う方法はありますか?

ありがとうございます!

+1

何を試しましたか? 'jQuery.offset()'関数をチェックし、ビューポート情報と要素の高さがわかります。加算と減算の問題だけです。 – Pablo

+0

あなたはこれを理解したことがありますか?私は同じことをやろうとしているし、運がない。 – JacobTheDev

答えて

1

ビューポートDIVの内容を別のDIVでラップします。 DIVがすべてのコンテンツの高さを読み取るように指定します。

JQuery:$( 'div#contents')。height();

レイアウト:

<div id="viewport"> 
    <div id="contents">...all your div contents...</div> 
</div> 

この情報がお役に立てば幸いです。がんばろう。

-1

固定された1100pxの高さを使用する必要がありますか?最大高さ:1100pxを指定することもできます。高さ:100%。 はあなたが、もちろん、あなたが何ができるか

$('.divclass').height(); 
7

によって現在の高さを得ることができますdivの内側に入れたい内容に応じて親からそれを親コンテナの先頭に要素の位置を取り、その後マイナスコンテナの高さ。それはあなたに要素の目に見える高さを与えます。ここで

$('#container').height() - $('#overflow').position().top 

はこれを示すfiddleあります。

+0

私は以前に.offsetを使用したことがなかったので、まず何かを教えてくれたあなたの答えに感謝します。私はあなたの方法を使って何かを考え出しましたが、残念ながらそれはうまくいきませんでした。私はすべて1100pxの高さの3つのdivがあるとしましょう。私の全体の文書はこうして3300px高いです。私がしたかったのは、最後のdivの上端とドキュメントの上端との距離を計算し、その結果に応じてリンクのターゲットを変更することでした。だから:alert(3300 - $( '#div3').offset()。top) –

+0

私は文書の一番上にいたときに1100を返しました。しかし、私はちょっとスクロールしてスクリプトを立ち上げましたが、それでも1100を返しました。私はそれが私に1100より高い数字を与えるだろうと思ったが、それはしなかった。だから、私はそれがやったと思ったものをオフセットはしていないと思うので、スクロールの現在の位置には適応しません。 :/ –

+0

@TomS。あなたの警告に '$(window).scrollTop()'を追加すれば、あなたが望むものが得られます。 [フィドル](http://jsfiddle.net/bplumb/mbZby/4/) –

関連する問題