jQuery를 사용하여 페이지의 스크롤 위치를 감지하는 방법


182

웹 사이트에서 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
창 스크롤을 듣는 것은 그 자체로는 나쁘지 않습니다. 사람들이 할 때 그것은이다 문제가 발생하는 해당 이벤트의 각 발사에 일을. 당신은 현재 스크롤 위치, 또는 참 /를 false로 설정 변수의 값과 같은 일을하고 사용 할 경우 외부 이벤트를, 당신은 일반적으로 황금해야한다.
Jesse Dupuy

6
이러한 종류의 이벤트를 처리 할 때는 수신 거부를 고려해야합니다. davidwalsh.name/javascript-debounce-function
caroso1222

이미 event논증의 기능을 가지고 있으므로 동일한 데이터를 얻을 수 있습니다event.originalEvent.pageY;
Antoniossss

119

window.scrollTop()기능을 찾고 있습니다.

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

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

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

이것은 scroll 값을 얻는 또 다른 방법입니다.


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

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

스크롤 위치 :

var scrolled_val = window.scrollY;

감지 스크롤 위치 :

$(window).scroll
(
     function (event) 
     {
          var scrolled_val = window.scrollY;
          alert(scrolled_val);
     }
 );
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.