jquery 为什么ScrollTop总是0?

bq3bfh9z  于 2023-08-04  发布在  jQuery
关注(0)|答案(3)|浏览(124)

我想知道什么是scrollTop和使用jQuery。但是,它总是显示0。
下面是我的jQuery代码:

var scrollTop = $(window).scrollTop()

//onscroll
window.onscroll = function (e) {
    console.log(scrollTop);
}

字符串
如果需要,我还可以添加HTMLCSS代码。
我尝试使用JavaScript

var scrollTop = (window.pageYOffset !== undefined) ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop;

//onscroll
window.onscroll = function (e) {
    console.log(scrollTop);
}


但是,一样。
如果答案不是用jQuery写的就更好了。

xfb7svmp

xfb7svmp1#

scrollTop的值未在onscroll事件处理程序中动态更新。相反,它只在脚本最初运行时分配一次。也许这个?
使用jQuery:

$(window).scroll(function () {
  var scrollTop = $(window).scrollTop();
  console.log(scrollTop);
});

字符串
纯JS:

window.addEventListener('scroll', function () {
  var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
  console.log(scrollTop);
});

cyvaqqii

cyvaqqii2#

scrollTop最初会被设置为0,然后每次记录它时,它都会使用该值。
如果您想要scrollTop的新值,则需要重新计算。将计算放在绑定到window.onscroll的函数中。

plupiseo

plupiseo3#

您的scrollTop变量已初始化,但它不会在onscroll函数中更新,这就是它保持不变的原因。说明:每次移动光标时,都会调用onscroll函数,其状态(位置:e.pageY)存储在onscroll函数的变量e中。
下面是一个使用jQuery在Scroll上获取光标/指针位置的方法:

$(window).on('scroll', function(e) {
  var current_position_from_top = e.pageY;
  console.log('Vertical position in pixel:', current_position_from_top);
});

字符串

相关问题