$ (okno) .scrollTop () vs. $ (dokument) .scrollTop ()


Odpowiedzi:


149

Oba będą miały ten sam efekt .

Jednak, jak wskazano w komentarzach: $(window).scrollTop()jest obsługiwany przez więcej przeglądarek internetowych niż $('html').scrollTop().


3
zwraca 0 w IE8 (chociaż moja strona jest w trybie dziwactw, co może odgrywać rolę)
Greg Ogle

38
$ ('html'). scrollTop () nie działa w różnych przeglądarkach (jako narzędzie do ustawiania nie działa przynajmniej w Chrome). Najbardziej crossbrowserowym sposobem na to jest teraz: $ (okno) .scrollTop () jako getter, $ ('html, body'). ScrollTop (offset) jako setter.
Georgii Ivankin

6
Zgodnie z tym odniesieniem bez argumentów scrollTopnigdzie nie przewija się, a jedynie zwraca bieżącą lokalizację przewijania.
LUB Mapper

3
@ d2burke scrollTop()jest geterem i scrollTop(value)setera. scrollTop()bez argumentów nie zmienia pozycji przewijania.

1
@ M98 window.scrollTo (x, y)
Bodman

36

Po pierwsze, musisz zrozumieć różnicę między windowi document. windowObiekt jest obiektem najwyższego poziomu po stronie klienta. Nad obiektem nie ma nic window. JavaScript jest językiem obiektowym. Zaczynasz od obiektu i stosujesz metody do jego właściwości lub właściwości jego grup obiektów. Na przykład documentobiekt jest obiektem windowobiektu. Aby zmienić document„s kolor tła, można ustawić document” s bgcolornieruchomości.

window.document.bgcolor = "red" 

Aby odpowiedzieć na twoje pytanie, nie ma różnicy w wyniku końcowym pomiędzy windowi document scrollTop. Oba dają taką samą moc wyjściową.

Sprawdź przykład roboczy pod adresem http://jsfiddle.net/7VRvj/6/

W powszechnym użyciu documentgłównie do rejestracji zdarzeń i wykorzystywać windowdo robienia rzeczy, jak scroll, scrollTopi resize.


Brak różnicy w wyniku końcowym. Oba dają taką samą moc wyjściową.
Hussein,

Najwyraźniej nie, niektóre przeglądarki nie obsługują przewijania okna, ponieważ obiekt okna może nie być przepełnionym obiektem.
Bodman,

11
Która przeglądarka nie obsługuje okna, bądź konkretny. Oto przykład jsfiddle.net/7VRvj/4 . Sprawdź to we wszystkich przeglądarkach i daj mi znać, która przeglądarka nie działa.
Hussein,


0

Właśnie miałem podobne problemy scrollTop opisanym tutaj.

W końcu udało mi się to obejść na Firefox i IE za pomocą selektora$('*').scrollTop(0);

Nie jest to idealne, jeśli masz elementy, których nie chcesz modyfikować, ale omija różnice między dokumentem, treścią, HTML i oknem. Jeśli to pomaga ...


20
Nigdy nie powinieneś używać * w ten sposób (w rzeczywistości unikaj * całkowicie). Zamiast kierowania na jeden element, wpływasz na cały DOM. Ogromny hit wydajności. Selektory powinny być jak najbardziej precyzyjne.
Vlad

2
Ja osobiście zawsze korzystałem $("html,body").scrollTop(val)- nigdy nie miałem żadnych problemów
Roi
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.