简体   繁体   English

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

[英]How to detect scroll position of page using jQuery

I am having trouble with jQuery functionality on my website. 我在我的网站上无法使用jQuery功能。 What it does, is that it uses the window.scroll() function to recognize when the windows changes its scroll position and at the change calls a few functions to load data from the server. 它的作用是使用window.scroll()函数来识别窗口何时更改其滚动位置,并在更改时调用一些函数来从服务器加载数据。

The problem is the .scroll() function is called as soon as there is even a little change in the scroll position and loads data at the bottom; 问题在于, .scroll()滚动位置有一点变化并在底部加载数据,就会立即调用.scroll()函数。 however, what I wish to achieve is to load new data when the scroll/page position reaches at the bottom, like it happens for Facebook feed. 但是,我希望实现的是在滚动/页面位置到达底部时加载新数据,就像Facebook feed那样。

But I am not sure how to detect scroll position using jQuery? 但是我不确定如何使用jQuery检测滚动位置吗?

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

$(window).scroll(function () {
    getData();
});

You can extract the scroll position using jQuery's .scrollTop() method 您可以使用jQuery的.scrollTop()方法提取滚动位置

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

You are looking for the window.scrollTop() function. 您正在寻找window.scrollTop()函数。

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

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

Check here DEMO http://jsfiddle.net/yeyene/Uhm2J/ 在这里检查演示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');
});

This is another way of getting the value of scroll. 这是获取滚动值的另一种方法。

Now that works for me... 现在对我有用...

$(document).ready(function(){

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

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

})

it works well... and then you can use JQuery/TweenMax to track elements and control them. 它运作良好...然后您可以使用JQuery / TweenMax跟踪元素并控制它们。

Store the value of the scroll as changes in HiddenField when around the PostBack retrieves the value and adds the scroll. 当在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" />

You can add all pages with this code: 您可以使用以下代码添加所有页面:

JS code: 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 CODE 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;
}
$('.div').scroll(function (event) {
 event.preventDefault()
 var scroll = $(this).scrollTop();
 if(scroll == 0){
   alert(123)
 }
});

This code for chat_boxes for loading previous messages chat_boxes的此代码用于加载先前的消息

GET Scroll Position: 获取滚动位置:

var scrolled_val = window.scrollY; var scrolled_val = window.scrollY;

DETECT Scroll Position: 检测滚动位置:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM