2013-07-03 13 views
121

Mam funkcjonalność jQuery na mojej stronie internetowej, co robi to, że używa funkcji window.scroll(), aby rozpoznać, kiedy okna zmieniają zmiany pozycji przewijania i przy wywołaniu zmiany kilka funkcji ładuje dane z serwera.Jak wykrywać pozycję przewijania strony za pomocą jQuery

Problem polega na wywołaniu funkcji .scroll(), gdy tylko nastąpi niewielka zmiana położenia przewijania i załadowanie danych na dole, ale chcę uzyskać nowe dane, gdy pozycja przewijania/strony osiągnie na dole, tak jak dzieje się w przypadku kanału Facebook.

Ale nie jestem pewien, jak wykryć pozycję przewijania za pomocą jQuery?

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

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

Odpowiedz

218

Można wyodrębnić stanowiska przewijania za pomocą jQuery's .scrollTop() method

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

ale jak to zrobić? –

+8

Dołączanie zdarzeń do przewijania okna to zły pomysł: zobacz http://stackoverflow.com/questions/5036850/how-to-detect-page-scroll-to-a-certain-in-in-jquery – hendr1x

+11

Słuchanie przewijania okna nie jest zły sam w sobie. To jest, gdy ludzie próbują robić __ rzeczy na każdym zwrocie tego wydarzenia, że ​​problem występuje. Jeśli robisz coś takiego, jak ustawianie wartości zmiennej na aktualną pozycję przewijania, lub na wartość true/false, a następnie korzystasz z _those_ poza zdarzeniem, powinieneś generalnie być złotym. –

101

szukasz funkcji window.scrollTop().

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

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

Sprawdź tutaj 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(); 
    } 
}); 
4
$(window).scroll(function() { 
var scrolled_val = $(document).scrollTop().valueOf(); 
alert(scrolled_val+ ' = scroll value'); 
}); 

Jest to kolejny sposób na uzyskanie wartości zwoju.

2

Zapisz wartość przewijania jako zmiany w polu HiddenField, gdy wokół PostBack pobiera wartość i dodaje zwój.

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

Teraz pracuje dla mnie ...

$(document).ready(function(){ 

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

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

}) 

to działa dobrze ... a następnie można użyć jQuery/TweenMax śledzić elementy i je kontrolować.

+4

Należy bezwzględnie unikać slur i złych słów. Przeczytaj [pomoc]. –

Powiązane problemy