32

不确定是否还有其他问题,如果是这样,我道歉,请不要释放猎犬。

使用 html5 文档类型并在我的滚动侦听器中快速执行 console.log,它告诉我 scrollTop() 值的值。我基本上是这样做的,所以当我滚动过去一个点时,我会改变一个元素的不透明度。我正在使用 MVS 解决方案执行此操作,但我无法将其推送到外部站点,以便您查看。这是一个快速的片段:

var opacity = 1;
var scrollTop = $('body').scrollTop();
if (scrollTop > 200) {
   opacity = 0.1;
}
$('#element).css('opacity', opacity);

如果我在 Chrome 中滚动,我会得到一个 console.log(scrollTop); 显示我想要的(即;每次滚动 100 次),当我达到 200 次滚动顶部后,我的不透明度消失了。如果我在 FF 和 IE7+ 中滚动,则每次滚动时 var 都会返回“0”。如果我将 $('body').scrollTop() 更改为 $('document').scrollTop(); 然后我在滚动时得到一个“null”返回。

有任何想法吗?谢谢!

4

4 回答 4

41

尝试使用var scrollTop = $(document).scrollTop();

于 2012-10-17T18:57:00.493 回答
17

$(window).scrollTop()在 Firefox 和 Chrome 中都可以正常工作。

为了验证,在 chrome 和 firefox 中运行以下 jsfiddle:http: //jsfiddle.net/RBBw5/6/

于 2012-10-17T19:01:37.077 回答
1

在对 IE9 的怪癖模式有些失望之后,我发现它$('body').scrollTop()在 IE9、Chrome 32 和 Firefox 26 中可靠地工作。

于 2014-02-02T12:41:49.153 回答
0

使用 varscrollTop = $('html').scrollTop();适用于 FireFox

不过,您需要嗅探浏览器(我知道,功能检测,而不是嗅探,但您无法检测到这一点),因为它在 Chrome 中不起作用,请在此处尝试:

浏览器检测 jQuery 1.9 最简单/最轻的替代品?

于 2013-10-17T06:11:07.083 回答