2013-02-14 12 views
60

Dziwna prośba, ale chcę, aby aktualna pozycja przewijania przeglądarki była zmienną. Jakiej funkcji js lub jquery powinienem użyć? Potrzebuję go, aby dowiedzieć się, jakie elementy wyświetlić na boku. Znalazłem kilka rzeczy online, ale nic, co działa dla mojego div, tylko pełna strona.Zdobądź pozycję przewijania za pomocą jquery

Odpowiedz

107

krzyż wariant przeglądarka

$(document).scrollTop(); 
+11

To powinna być zaakceptowana odpowiedź; $ ('body'). scrollTop() nie działa w IE. – Robert

+1

$ ('body'). ScrollTop() również nie działał dla mnie w Firefoksie. – GTCrais

+0

try $ ("html, body").scrollTop(); – arturmoroz

30

Starsze przeglądarki IE i Firefox dołączają pasek przewijania do documentElement lub co to jest znacznik <html> w HTML.

Wszystkie inne przeglądarki dołączają pasek przewijania do document.body lub jaki jest tag <body> w HTML.

Prawidłowe rozwiązanie byłoby sprawdzić, który z nich korzystać, w zależności od przeglądarki

var doc = document.documentElement.clientHeight ? document.documentElement : document.body; 
var s = $(doc).scrollTop(); 

jQuery robi to trochę łatwiejsze, kiedy przechodząc albo window lub document jQuery scrollTop robi podobną kontrolę i danych liczbowych na zewnątrz, więc jeden z nich powinien działać cross-browser

var s = $(document).scrollTop(); 

lub

var s = $(window).scrollTop(); 

jQuery scrollTop() docs

Opis: Pobierz aktualną pozycję pionową paska przewijania dla pierwszy element zestawu dopasowanych elementów lub ustawić w pionie położenie paska przewijania dla każdego dopasowanego elementu.


... nic, że działa dla mojego div, tylko pełne strona

Jeśli to dla DIV, trzeba kierować element, który ma paska przewijania załączony , aby uzyskać przewijane ilość

$('div').scrollTop(); 

Jeśli trzeba uzyskać dystans elementy z górnej części dokumentu, można również zrobić

$('div').offset().top 
1

Użyj scrollTop(), aby uzyskać lub ustawić pozycję przewijania.

3

Uważam, że najlepszą metodą z jQuery używa .scrollTop():

var pos = $('body').scrollTop(); 
+0

Co różni tę odpowiedź za drugim @ adeneo za? –

+3

Daryl's jest ponad 7% mniejszy, dzięki czemu jest bardziej wydajny;) –

+0

@JasonSperske: D teraz twoja przyczyna Mam do zrobienia kolejną kawę –

Powiązane problemy