2013-01-02 71 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之前,所以首先感謝你的答案,這教會了我一些東西。 :-)我試圖用你的方法想出一些東西,但不幸的是它沒有工作。假設我有3個高度均爲1100px的div。因此,我的整個文件是3300px高。我想要做的是計算最後一個div的頂部和文檔頂部之間的距離,然後根據結果更改鏈接的目標。所以:alert(3300 - $('#div3')。offset()。top) –

+0

當我在文檔的頂部時,它返回了1100,這正是我所期望的。但後來我滾動了一下,啓動了腳本,但它仍然返回了1100.我認爲這會給我一個高於1100的數字,但它不會。所以我猜.offset並不完全符合我的想法,它只是不適應當前的滾動位置。 : -/ –

+0

@TomS。添加'$(window).scrollTop()'到你的警報,它會給你你想要的。 [小提琴](http://jsfiddle.net/bplumb/mbZby/4/) –

相關問題