使用jquery获取滚动位置

cen*_*ree 63 javascript jquery

奇怪的请求,但我需要将当前浏览器滚动位置作为变量.我应该使用什么js或jquery函数?我需要它来确定侧面显示的元素.我在网上发现了一些东西,但没有什么对我的div有用,只是整页.

art*_*roz 113

跨浏览器变种

$(document).scrollTop();
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案; $('body').scrollTop()在IE中不起作用. (11认同)

ade*_*neo 31

较旧的IE浏览器和Firefox浏览器将滚动条附加到HTML documentElement<html>HTML中的标记.

所有其他浏览器都将滚动条附加到HTML document.body<body>HTML中的标记.

正确的解决方案是根据浏览器检查使用哪一个

var doc = document.documentElement.clientHeight ? document.documentElement : document.body;
var s   = $(doc).scrollTop();
Run Code Online (Sandbox Code Playgroud)

jQuery确实让它变得更容易,当传入任何一个windowdocumentjQuery时scrollTop做了类似的检查并将其弄清楚,因此其中任何一个都应该跨浏览器工作

var s = $(document).scrollTop();
Run Code Online (Sandbox Code Playgroud)

要么

var s = $(window).scrollTop();
Run Code Online (Sandbox Code Playgroud)

jQuery scrollTop()文档

描述:获取匹配元素集中第一个元素的滚动条的当前垂直位置,或为每个匹配元素设置滚动条的垂直位置.


......没有什么对我的div有用,只有整页

如果它是DIV,你必须定位附有滚动条的元素,以获得滚动量

$('div').scrollTop();
Run Code Online (Sandbox Code Playgroud)

如果您需要从文档顶部获取元素距离,您也可以这样做

$('div').offset().top
Run Code Online (Sandbox Code Playgroud)