2013-02-14 119 views
60

奇怪的請求,但我需要獲取當前的瀏覽器滾動位置作爲變量。我應該使用什麼js或jquery函數?我需要它弄清楚哪些元素要顯示在旁邊。我在網上發現了一些東西,但沒有什麼適用於我的div,只是整個頁面。使用jquery獲取滾動位置

回答

107

跨瀏覽器變種

$(document).scrollTop(); 
+11

這應該是被接受的答案; $('body')。scrollTop()在IE中不起作用。 – Robert 2013-10-02 07:44:17

+1

$('body')。scrollTop()在Firefox中也不適用於我。 – GTCrais 2015-01-03 21:20:45

+0

嘗試$('html,body')。scrollTop的(); – arturmoroz 2015-01-05 10:59:02

30

較早的IE和Firefox瀏覽器將滾動條附加到documentElement或HTML中的<html>標籤。

所有其他瀏覽器都將滾動條附加到document.body或HTML中的<body>標籤。

正確的解決辦法是檢查使用哪一個,這取決於瀏覽器

var doc = document.documentElement.clientHeight ? document.documentElement : document.body; 
var s = $(doc).scrollTop(); 

jQuery也使這更容易一點,通過在任一windowdocument jQuery的scrollTop時做了類似的檢查和數字它出,所以無論這些應該工作的跨瀏覽器

var s = $(document).scrollTop(); 

var s = $(window).scrollTop(); 

jQuery scrollTop() docs

說明:獲取滾動條的當前垂直位置爲 集合中的匹配元素的第一元素或設置滾動條的垂直位置 對於每個匹配的元素。


...什麼都沒有,對於我的DIV,只是整版工作

如果它是一個DIV,你必須瞄準貼有滾動條的元素,以獲取滾動量

$('div').scrollTop(); 

如果你需要從文件頂部的元素的距離,你也可以做

$('div').offset().top 
3

相信與jQuery的最佳方法是使用.scrollTop()

var pos = $('body').scrollTop(); 
+0

什麼不同這個答案由@ adeneo的一個? – 2013-02-14 23:42:39

+3

達里爾小了7%,爲此效率更高;) – 2013-02-14 23:44:23

+0

@JasonSperske:D現在導致你我必須再喝一杯咖啡 – 2013-02-14 23:45:11