如何使用jQuery检测页面的滚动位置

IT技术 javascript jquery scroll
2021-02-07 04:51:12

我的网站上的 jQuery 功能有问题。它的作用是使用该window.scroll() 函数来识别窗口何时更改其滚动位置,并在更改时调用一些函数以从服务器加载数据。

问题是.scroll()只要滚动位置稍有变化就会调用函数并在底部加载数据;但是,我希望实现的是在滚动/页面位置到达底部时加载新数据,就像 Facebook 提要一样。

但我不确定如何使用 jQuery 检测滚动位置?

function getData() {
  $.getJSON('Get/GetData?no=1', function (responseText) {
    //Load some data from the server
  })
};

$(window).scroll(function () {
    getData();
});
6个回答

您可以使用 jQuery 的.scrollTop()方法提取滚动位置

$(window).scroll(function (event) {
    var scroll = $(window).scrollTop();
    // Do something
});
将事件附加到窗口滚动是一个坏主意:请参阅stackoverflow.com/questions/5036850/...
2021-03-13 04:51:12
由于您已经event在函数中作为参数,您可以从中获取相同的数据event.originalEvent.pageY;
2021-03-23 04:51:12
在处理此类事件时,您应该考虑去抖动。参见davidwalsh.name/javascript-debounce-function
2021-03-29 04:51:12
听窗口滚动本身并不坏。当人们试图在该事件的每次触发做某事,就会出现问题。如果您只执行诸如将变量的值设置为当前滚动位置或 true/false 之类的操作,然后使用事件之外的那些值,那么您通常应该是黄金。
2021-04-04 04:51:12

您正在寻找该window.scrollTop()功能。

$(window).scroll(function() {
    var height = $(window).scrollTop();

    if(height  > some_number) {
        // do something
    }
});

在这里查看演示http://jsfiddle.net/yeyene/Uhm2J/

function getData() {
    $.getJSON('Get/GetData?no=1', function (responseText) {
        //Load some data from the server
    })
};

$(window).scroll(function() {
   if($(window).scrollTop() + $(window).height() == $(document).height()) {
       alert("bottom!");
       // getData();
   }
});
$(window).scroll( function() { 
 var scrolled_val = $(document).scrollTop().valueOf();
 alert(scrolled_val+ ' = scroll value');
});

这是获取滚动值的另一种方法。

现在这对我有用...

$(document).ready(function(){

    $(window).resize(function(e){
        console.log(e);                   
    });

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

})

它运行良好……然后您可以使用 JQuery/TweenMax 来跟踪元素并控制它们。

请绝对避免诽谤和脏话。阅读帮助中心
2021-04-09 04:51:12