$ (window) .scrollTop () против $ (document) .scrollTop ()


Ответы:


149

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

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


3
он возвращает 0 в IE8 (хотя моя страница находится в режиме причуд, что может сыграть определенную роль)
— Грег Огл

38
$ ('html'). scrollTop () не является кросс-браузерным (как установщик, он не работает, по крайней мере, в Chrome). Наиболее кроссбраузерный способ сделать это на данный момент: $ (window) .scrollTop () как метод получения, $ ('html, body'). ScrollTop (offset) как метод установки.
— Георгий Иванкин

6
Согласно этой ссылке , без аргументов scrollTopникуда не прокручивается, а просто возвращает текущее местоположение прокрутки.
— ИЛИ Mapper

3
@ d2burke scrollTop()- геттер и scrollTop(value)сеттер. scrollTop()без аргументов не меняет позицию прокрутки.

1
@ M98 window.scrollTo (x, y)
— Бодман

36

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

window.document.bgcolor = "red" 

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

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

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


Нет разницы в конечном результате. Оба будут давать одинаковый результат.
— Хусейн

Очевидно, что некоторые браузеры не поддерживают прокрутку окна, поскольку объект окна может не быть объектом, который переполняется.
— Бодман

11
Какой браузер не поддерживает окно, будьте конкретны. Вот пример jsfiddle.net/7VRvj/4 . Проверьте это во всех браузерах и дайте мне знать, в каком браузере он не работает.
— Хусейн


0

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

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

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


20
Вы никогда не должны использовать * этот способ (на самом деле, избегать * вообще). Вместо нацеливания на один элемент, вы воздействуете на весь DOM. Огромный удар по производительности. Селекторы должны быть максимально точными.
— Влад

2
Я лично всегда использовал $("html,body").scrollTop(val)- никогда не было никаких проблем
— Рой
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.