Cách phát hiện vị trí cuộn của trang bằng jQuery


182

Tôi gặp sự cố với chức năng jQuery trên trang web của mình. Những gì nó làm, là nó sử dụng window.scroll() chức năng để nhận ra khi các cửa sổ thay đổi vị trí cuộn của nó và khi thay đổi sẽ gọi một vài chức năng để tải dữ liệu từ máy chủ.

Vấn đề là .scroll()chức năng được gọi ngay khi có một chút thay đổi ở vị trí cuộn và tải dữ liệu ở phía dưới; tuy nhiên, điều tôi muốn đạt được là tải dữ liệu mới khi vị trí cuộn / trang đạt đến mức thấp nhất, giống như điều đó xảy ra với nguồn cấp dữ liệu của Facebook.

Nhưng tôi không chắc chắn làm thế nào để phát hiện vị trí cuộn bằng jQuery?

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

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

Điều này có trả lời câu hỏi của bạn không? Cách phát hiện hướng cuộn
Aryan Beezadhur

Câu trả lời:


321

Bạn có thể trích xuất vị trí cuộn bằng .scrollTop()phương thức của jQuery

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

8
Đính kèm các sự kiện vào cuộn cửa sổ là một ý tưởng tồi: xem stackoverflow.com/questions/5036850/ trên
hendr1x

12
Nghe cuộn cửa sổ không phải là xấu trong chính nó. Đó là khi mọi người cố gắng làm mọi việc trong mỗi lần bắn sự kiện đó mà sự cố xảy ra. Nếu bạn chỉ làm điều gì đó như đặt giá trị của biến thành vị trí cuộn hiện tại hoặc thành đúng / sai, sau đó sử dụng những giá trị bên ngoài sự kiện, bạn thường nên là vàng.
Jesse Dupuy

6
Bạn nên xem xét việc thảo luận khi làm việc với loại sự kiện này. Xem davidwalsh.name/javascript-debounce-feft
caroso1222 11/03/2016

Khi bạn đã có eventchức năng làm đối số, bạn có thể nhận được cùng một dữ liệu từevent.originalEvent.pageY;
Antoniossss

119

Bạn đang tìm kiếm window.scrollTop()chức năng.

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

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

36

Kiểm tra tại đây DEMO 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');
});

Đây là một cách khác để có được giá trị của cuộn.


4

Bây giờ điều đó làm việc cho tôi ...

$(document).ready(function(){

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

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

})

nó hoạt động tốt ... và sau đó bạn có thể sử dụng JQuery / TweenMax để theo dõi các phần tử và kiểm soát chúng.


5
Xin tuyệt đối tránh những lời xỉ vả và những lời không hay. Đọc trung tâm trợ giúp .
Kyll

2

Lưu trữ giá trị của cuộn khi thay đổi trong HiddenField khi xung quanh PostBack lấy giá trị và thêm cuộn.

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

Bạn có thể thêm tất cả các trang với mã này:

Mã 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 */

MÃ 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)
 }
});

Mã này cho chat_boxes để tải các tin nhắn trước đó


0

NHẬN vị trí cuộn:

var scrolled_val = window.scrollY;

DETECT Vị trí cuộn:

$(window).scroll
(
     function (event) 
     {
          var scrolled_val = window.scrollY;
          alert(scrolled_val);
     }
 );
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.