jQueryを使用してページのスクロール位置を検出する方法


182

Webサイトの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();
});

これはあなたの質問に答えますか?スクロール方向を検出する方法
Aryan Beezadhur

回答:


321

jQueryの.scrollTop()メソッドを使用してスクロール位置を抽出できます

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

8
ウィンドウのスクロールにイベントをアタッチすることは悪い考えです:参照stackoverflow.com/questions/5036850/...
hendr1x

12
ウィンドウスクロールを聞くこと自体は悪くありません。問題が発生するのは、そのイベントが発生するたびに人々何かをしようとするときです。変数の値を現在のスクロール位置またはtrue / falseに設定するだけで、イベント外でそれらを利用する場合は、一般的にゴールデンになるはずです。
ジェシーデュピュイ

6
この種のイベントを処理する場合は、デバウンスを検討する必要があります。davidwalsh.name/javascript-debounce-function
caroso1222を

すでにevent引数として関数を持っているので、同じデータを取得できますevent.originalEvent.pageY;
Antoniossss


36

デモ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();
   }
});

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

これは、スクロールの値を取得する別の方法です。


4

これでうまくいきました...

$(document).ready(function(){

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

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

})

JQuery / TweenMaxを使用して要素を追跡し、制御することができます。


5
中傷や下品な言葉は絶対に避けてください。ヘルプセンターをご覧ください。
Kyll、2015

2

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" />

0

このコードですべてのページを追加できます:

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;
}

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

以前のメッセージを読み込むためのchat_boxesのこのコード


0

GETスクロール位置:

var scrolled_val = window.scrollY;

DETECTスクロール位置:

$(window).scroll
(
     function (event) 
     {
          var scrolled_val = window.scrollY;
          alert(scrolled_val);
     }
 );
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.