ChatGPT解决这个技术问题 Extra ChatGPT

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

我在我的网站上遇到了 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();
});
这回答了你的问题了吗? How to detect scroll direction

I
Ivan

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

$(window).scroll(function (event) {
    var scroll = $(window).scrollTop();
    // Do something
});

将事件附加到窗口滚动是一个坏主意:请参阅 stackoverflow.com/questions/5036850/…
听窗口滚动本身并不坏。当人们试图在每次触发该事件时做某事时,就会发生麻烦。如果您只执行诸如将变量的值设置为当前滚动位置或 true/false 之类的操作,然后在事件之外使用这些值,那么您通常应该是黄金。
在处理此类事件时,您应该考虑去抖动。请参阅davidwalsh.name/javascript-debounce-function
由于您已经在函数中有 event 作为参数,您可以从 event.originalEvent.pageY; 获取相同的数据
我来过这里几次。因为我忘记在声明我的 javascript 文件之前添加 jQuery。如果这对您不起作用,请检查您先声明它。
D
David Freitag

您正在寻找 window.scrollTop() 函数。

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

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

y
yeyene

在这里查看演示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();
   }
});

s
safeer008
$(window).scroll( function() { 
 var scrolled_val = $(document).scrollTop().valueOf();
 alert(scrolled_val+ ' = scroll value');
});

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


b
bummi

现在这对我有用......

$(document).ready(function(){

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

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

})

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


请绝对避免诽谤和坏话。阅读help center
M
Mauricio Ferraz

当围绕 PostBack 检索值并添加滚动时,将滚动的值存储为 HiddenField 中的更改。

//jQuery

jQuery(document).ready(function () {

    $(window).scrollTop($("#<%=hidScroll.ClientID %>").val());

    $(window).scroll(function (event) {
        $("#<%=hidScroll.ClientID %>").val($(window).scrollTop());
    });
});

var prm = Sys.WebForms.PageRequestManager.getInstance();

prm.add_endRequest(function () {

    $(window).scrollTop($("#<%=hidScroll.ClientID %>").val());

    $(window).scroll(function (event) {
        $("#<%=hidScroll.ClientID %>").val($(window).scrollTop());
    });
});

//Page Asp.Net
<asp:HiddenField ID="hidScroll" runat="server" Value="0" />

F
Ferhat KOÇER

您可以使用此代码添加所有页面:

JS代码:

 /* Top btn */
    $(window).scroll(function() {
        if ($(this).scrollTop()) {
            $('#toTop').fadeIn();
        } else {
            $('#toTop').fadeOut();
        }
    });
    var top_btn_html="<topbtn id='toTop' onclick='gotoTop()'>&#8593;</topbtn>";
    $('document').ready(function(){
        $("body").append(top_btn_html);
    });
    function gotoTop(){
        $("html, body").animate({scrollTop: 0}, 500);    
    }
    /* Top btn */

CSS 代码

/*Scrool top btn*/
#toTop{
    position: fixed;
    z-index: 10000;
    opacity: 0.5;
    right: 5px;
    bottom: 10px;
    background-color: #ccc;
    border: 1px solid black;
    width: 40px;
    height: 40px;
    border-radius: 20px;
    color: black;
    font-size: 22px;
    font-weight: bolder;
    text-align: center;
    vertical-align: middle;
}

R
RinShan Kolayil
$('.div').scroll(function (event) {
 event.preventDefault()
 var scroll = $(this).scrollTop();
 if(scroll == 0){
   alert(123)
 }
});

用于加载以前消息的 chat_boxes 代码


H
Hassaan Raza

获取滚动位置:

var scrolled_val = window.scrollY;

检测滚动位置:

$(window).scroll
(
     function (event) 
     {
          var scrolled_val = window.scrollY;
          alert(scrolled_val);
     }
 );