2013-03-28 45 views
5

下面的代碼是用來檢測用戶是否已經滾動到頁面底部它的工作原理。

if($(window).scrollTop() == $(document).height() - $(window).height()){ 
//do something 
} 

問題:

我不明白爲什麼你減去從文檔的高度窗口的高度,然後比較,以滾動高度,以確定是否底部該頁面已經達到。爲什麼不是簡單地

if($(window).scrollTop() == $(document).height()){ 
//do something 
} 

if($(window).scrollTop() == $(window).height()){ 
//do something 
} 

回答

12

這是因爲$(window).scrollTop()返回頁面頂部的位置,$(document).height()返回頁面底部的位置。因此,您需要減去窗口的高度以獲取與之比較的位置,因爲如果完全滾動到底部,這會給出頁面頂部所在的位置。

+0

謝謝。恰到好處。清晰簡潔。 –

+0

所以我怎麼能改變它從窗口到特定的div而不是?用('#scrollbar')替換(窗口)?你能告訴我正確的語法,謝謝:) –

+0

我相信以下是正確的,你可能想檢查跨瀏覽器,因爲我只測試了鉻:http://jsfiddle.net/e1uxn46k/。基本上你做一個非常類似的事情,但你檢查div的scrollHight對scrolltop + innerheight。 – CodePB

0

scrollTop值永遠不會高達原稿的高度值。這意味着您滾動瀏覽文檔以至於它都在窗口之外。

比較scrollTop到窗口高度將只是意味着你有一個滾動屏幕朝下,而不是文件的底部。

從文檔高度中減去窗口高度會得到scrollTop的值,當窗口底部位於文檔底部時。

3

$(window).scrollTop()是窗口相對於文檔的頂部的位置。在我現在看到的頁面上,如果我滾動到最底部,那就是1385$(document).height()是整個頁面的高度(對我來說是1991)。 $(window).height()是窗口的高度(視口)(606)。這意味着視口頂部的位置加上窗口的高度是視口的位置底部1385 + 606 = 1991

相關問題