2009-06-12 43 views
5

我有一個具有已定義高度的div,並且overflow:scroll;。它的內容太長,所以出現滾動條。jQuery:如何確定一個div向下滾動

現在爲ichy部分。它的一些內部HTML總是奇怪地出現(準確地說,是由tableFilter插件生成的表的頁腳)。我不想讓這個頁腳在不需要的時候消失(它實際上出現在包含<div>的邊框之外)。我決定讓它消失,但將它的z-index設置爲-1000。但是我想讓它在包含<div>完全滾動時出現。

我怎麼知道用戶已經滾動到底部?


使用從答案的幫助下,我用scrollTop屬性,但scrollTopinnerHeight之間的區別是滾動條加上一些不明身份的三角洲的大小。在Windows下的大多數瀏覽器中,滾動條的高度是16像素,但我在Firefox中獲得了17的差異,在IE中獲得了20的差異,其中我的<div>內容的邊框似乎變得更大。

計算滾動條大小的方法(實際上有兩種方法)已被給出there

回答

11

您需要比較div高度與scrollTop位置和元素高度。

$(div).scroll(function(){ 
    if(isScrollBottom()){ 
    //scroll is at the bottom 
    //do something... 
    } 
}); 

function isScrollBottom() { 
    var elementHeight = $(element).height(); 
    var scrollPosition = $(div).height() + $(div).scrollTop(); 
    return (elementHeight == scrollPosition); 
} 
+0

當我完全向下滾動時,我得到了elementHeight和scrollPosition之間的17像素差異。認爲它是滾動條高度+一些邊界? – glmxndr 2009-06-12 14:19:21

1

沒有jQuery的需要來獲取信息:

element.scrollTop; 

在你的DIV的滾動事件,使用該信息所要檢查的元素的高度,如果匹配(或接近匹配)做任何你想要的。

+0

實際上它不是元素的高度,而是內部高度和容器高度之間的差異。不是嗎? – glmxndr 2009-06-12 14:14:07

+0

我跟Shaun說的一樣。但是,我不會去尋找==,而是會像`elementHeight <= scrollPosition + 20`這樣粗糙的東西來解釋水平滾動條。如果你發現你的其他問題取得成功(找到滾動條的大小),你會使用它,而不是我的馬虎。20 – 2009-06-12 14:47:51

3

你可以知道,如果股利是通過簡單地這樣做向下滾動:

if (div.scrollTop + div.clientHeight == div.scrollHeight){ 
//... 
} 

它適用於火狐,Chrome和IE8

0
function elementInViewport(el) { 
    var listcontent= $(".listContainer")[0].getBoundingClientRect(); 
    var rect = $(el)[0].getBoundingClientRect(); 
    return [(rect.top >= 0 && rect.left >= 0 && rect.bottom <= listcontent.bottom), (rect.bottom - listcontent.bottom)] 
} 
0

你只需要使用scrollHeight屬性div的屬性而不是高度。該功能isScrollBottom(),它Shaun Humphries以前寫的,可以把這樣

function isScrollBottom() { 
var totalHeight = $("divSelector")[0].scrollHeight; 
var scrollPosition = $("divSelector").height() + $("divSelector").scrollTop(); 
return (totalHeight == scrollPosition); 
} 
-1

我想,乾脆

$(this).scrollTop()

會做的伎倆。從MDN Element.scrollHeight

toallyScrolled = element.scrollHeight - element.scrollTop === element.clientHeight; 

0

這不限於的div。在該頁面上還有一個很好的演示。

相關問題