web-dev-qa-db-ja.com

$(window).scrollTop()と$(document).scrollTop()

何が違いますか:

$(window).scrollTop()

そして

$(document).scrollTop()

ありがとう。

175
frenchie

どちらも同じ効果を持つことになります

しかし、コメントで指摘されているように、$(window).scrollTop()$('html').scrollTop()より多くのウェブブラウザでサポートされています。

141
Bodman

まず、ウィンドウとドキュメントの違いを理解する必要があります。ウィンドウオブジェクトは最上位のクライアントサイドオブジェクトです。ウィンドウオブジェクトの上には何もありません。 Javascriptはオブジェクト指向の言語です。オブジェクトから始めて、そのプロパティまたはオブジェクトグループのプロパティにメソッドを適用します。たとえば、ドキュメントオブジェクトはウィンドウオブジェクトのオブジェクトです。ドキュメントの背景色を変更するには、ドキュメントのbgcolorプロパティを設定します。

window.document.bgcolor = "red" 

あなたの質問に答えるために、ウィンドウとドキュメントのscrollTopの最終結果に違いはありません。どちらも同じ出力になります。

http://jsfiddle.net/7VRvj/6/ で動作例を確認してください。

一般的にdocumentは主にイベントを登録するために使い、windowを使ってscroll、scrollTop、およびresizeのようなことをします。

33
Hussein

クロスブラウザのやり方は

var top = ($(window).scrollTop() || $("body").scrollTop());
5

私はここで説明されているscrollTopと同様の問題をいくつか抱えています。

最後に私はFirefoxIEでこれを回避しました。セレクタ$('*').scrollTop(0);を使う

あなたがあなたが影響を与えたくない要素があるならば完璧ではありません、しかしそれはDocument、Body、HTMLとWindowの視差を回避します。それが助けになるなら...

0
Tapiochre