$ (window) .scrollTop () против $ (document) .scrollTop () - PullRequest
176 голосов
/ 20 марта 2011

Какая разница между:

$(window).scrollTop()

и

$(document).scrollTop()

Спасибо.

Ответы [ 4 ]

141 голосов
/ 20 марта 2011

Они оба будут иметь одинаковый эффект .

Однако, как указано в комментариях: $(window).scrollTop() поддерживается большим количеством веб-браузеров , чем$('html').scrollTop().

33 голосов
/ 20 марта 2011

Во-первых, вам нужно понять разницу между окном и документом.Объект window является объектом на стороне клиента верхнего уровня.Там нет ничего выше оконного объекта.Javascript - это объектно-ориентированный язык.Вы начинаете с объекта и применяете методы к его свойствам или свойствам его групп объектов.Например, объект документа является объектом объекта окна.Чтобы изменить цвет фона документа, вы должны установить свойство документа bgcolor.

window.document.bgcolor = "red" 

Чтобы ответить на ваш вопрос, нет разницы в конечном результате между окном и документом scrollTop.Оба будут выдавать один и тот же результат.

Проверьте рабочий пример на http://jsfiddle.net/7VRvj/6/

В общем, используйте документ в основном для регистрации событий и используйте окно для таких вещей, как scroll, scrollTop и resize.

5 голосов
/ 20 октября 2016

Кросс-браузерный способ сделать это

var top = ($(window).scrollTop() || $("body").scrollTop());
0 голосов
/ 22 ноября 2012

У меня только что были некоторые похожие проблемы с scrollTop, описанные здесь.

В конце концов я обошел это на Firefox и IE с помощью селектора $('*').scrollTop(0);

Не идеально, если у вас есть элементы, которые вы надеваетене хочу влиять, но это преодолевает различия между документами, телом, HTML и окнами.Если это поможет ...

...