2013-02-14 52 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