$(документ.)scrollTop() всегда возвращает 0
Я просто пытаюсь сделать что-то, когда положение прокрутки страницы достигает определенной высоты. Однако scrollTop() возвращает 0 или null независимо от того, как далеко вниз я прокручиваю. Это функция справки, которую я использую для проверки scrollTop() значение:
$('body').click(function(){
var scrollPost = $(document).scrollTop();
alert(scrollPost);
});
Я пробовал прикреплять scrollTop() to $('body'),$('html') и конечно $(window), но ничего не меняется.
какие идеи?
8 ответов:
по какой-то причине удаление "height: 100%" из моих тегов html и body исправило эту проблему.
Я надеюсь, что это поможет кому-то еще!
у меня была такая же проблема со scroll = 0 in:
document.body.scrollTopв следующий раз используйте
document.scrollingElement.scrollTopизменить 01.06.2018
если вы используете
eventтогда вы получили объект, который имеетdocumentэлементtargetилиsrcElement.Вот таблица, показывающая операции прокрутки в разных браузерах.
как вы можете видеть Firefox и IE не имеет
srcElementи IE 11 не поддерживаетscrollingElement.
у меня просто есть дополнение для тех, кто может сделать ту же ошибку, что и я. Мой код был следующим:
var p = $('html,body'); $( ".info" ).text( "scrollTop:" + p.scrollTop() );этот код будет работать на всех браузерах, кроме браузера webkits, таких как chrome и safari, потому что
<html>тег всегда имеет значение scrollTop, равное нулю или нулю.другие браузеры игнорируют его, а браузеры webkit-нет.
самое простое решение - просто удалить HTML-тег из вашего кода et Voila:
var p = $('body'); $( ".info" ).text( "scrollTop:" + p.scrollTop() );
мое решение, после попытки некоторых из вышеперечисленных и которое не включает в себя изменение любого CSS:
var scroll_top = Math.max( $("html").scrollTop(), $("body").scrollTop() )это работает в современных версиях Chrome, Firefox, IE и Edge.
удаление
height: 100%;из html и тегов тела можно решить эту проблему.причина:
причина в том, что вы могли бы установить 100% в качестве значения свойства height HTML и элементов тела. Если вы зададите свойство height html и элементы тела на 100%, они получают высоту, равную высоте документа.
это: https://www.давуднаджам.технология / блог/2017/11/17/jquery-scrolltop-возвращает-0/
была такая же проблема. scrollTop () работает с некоторым блоком, а не с документом или телом. Чтобы этот метод работал u должен добавить высоту и стиль переполнения для вашего блока:
#scrollParag { height: 500px; overflow-y: auto; }и затем:
var scrolParag = document.getElementById('scrollParag'); alert(scrolParag.scrollTop); // works!
прокрутка сверху всегда возвращала 0 для меня. Я использовал его для привлечения внимания к конкретному элементу на странице. Для этого я использовал другой подход.
документ.getElementById ("elementID").scrollIntoView();
работает хорошо для меня на мобильном телефоне, планшете и рабочем столе.
кстати, кажется, что вы должны использовать
$("body").scrollTop()вместо
$(".some-class").scrollTopвот почему я застрял.


Comments