$(window).scrollTop()与$(document).scrollTop()


Answers:


149

它们都将具有相同的效果

但是,正如评论中指出的::比拥有$(window).scrollTop()更多的Web浏览器支持$('html').scrollTop()


3
它在IE8中返回0(尽管我的页面处于怪癖模式,这可能会起作用)
Greg Ogle 2012年

38
$('html')。scrollTop()并非跨浏览器(作为设置器,它至少在Chrome中不起作用)。目前最跨浏览器的方式是:$(window).scrollTop()作为获取器,$('html,body')。scrollTop(offset)作为获取器。
Georgii Ivankin

6
根据此参考,不带参数的行scrollTop不会滚动到任何地方,而只是返回当前的滚动位置。
OR Mapper

3
@ d2burke scrollTop()是一个吸气剂,scrollTop(value)是一个setter。scrollTop()不带参数不会更改滚动位置。

1
@ M98 window.scrollTo(x,y)
博德曼

36

首先,你需要明白之间的差别windowdocument。该window对象是顶级客户端对象。window物体上方没有任何东西。JavaScript是一种面向对象的语言。您从对象开始,然后将方法应用于其属性或对象组的属性。例如,document对象是对象的window对象。要更改document的背景色,请设置documentbgcolor属性。

window.document.bgcolor = "red" 

要回答您的问题,window和的最终结果没有区别document scrollTop。两者将给出相同的输出。

http://jsfiddle.net/7VRvj/6/中查看工作示例

在一般的使用document主要是为了注册的事件,使用window到做这样的事情scrollscrollTopresize


最终结果没有差异。两者将给出相同的输出。
侯赛因

显然,某些浏览器不支持窗口滚动,因为窗口对象可能不是溢出的对象。
博德曼

11
具体哪些浏览器不支持窗口。这是一个示例 jsfiddle.net/7VRvj/4。在所有浏览器中检查它,并让我知道它不能在哪个浏览器上运行。
侯赛因


0

我刚刚遇到了一些与scrollTop此处描述的类似问题。

最后,我通过使用选择器在FirefoxIE上解决了这个问题$('*').scrollTop(0);

如果您有不想影响的元素,但它会绕过Document,Body,HTML和Window视差,则并不完美。如果有帮助...


20
您永远不要以这种方式使用*(实际上,完全避免*)。而不是针对一个元素,而是影响整个DOM。巨大的性能打击。选择器应尽可能精确。
弗拉德(Flad)

2
我个人一直都使用过$("html,body").scrollTop(val)–从来没有任何问题
Roi 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.