2012-04-05 13 views
9

Mam kilka zakotwiczeń, które łączą się z określonymi sekcjami (za pomocą hashtagów) na stronie oraz tymi, które przewijają się do górnej lub dolnej części okna dokumentu.Blokady przewijania/przewijania po animacji z przewijaniem

$("html, body").animate({ scrollTop: $(document).height() }, 2000); 

jednak jak najszybciej osiągnął animacja i przewijanie jest docelowy i zakończone, dokument przewijanie i przewijania wydają się wyłączyć na kilka sekund. Na przykład, jeśli klikniesz link "Przejdź do dolnej części strony", moje okno dokumentu zostanie poprawnie przewinięte na dół strony. Jak tylko spróbuję przewinąć w górę, porusza się nieco w górę iw dół w roztrzęsionym ruchu i pozwala mi przewinąć kilka prób później.

Jakieś wskazówki dotyczące przyczyn tego problemu?

Odpowiedz

16

Ten wątek jest stary, ale wpadłem na to i tam arent odpowiedzi wszędzie, ale tutaj jest rozwiązanie:

$(window).bind("mousewheel", function() { 
    $("html, body").stop(); 
}); 

jeśli użytkownik korzysta z paska przewijania, gdy animacja jest wykonywany, zatrzymuje animację.

+0

Wow! To rozwiązało problem także dla mnie, bardzo dziękuję za udostępnienie! :) –

+0

Dziękuję, dziękuję, dziękuję! – TWright

7

Wystarczy, aby przyczynić się do odpowiedzi Scotty'ego, rzeczywiście można również dodać dwie opcje do .Zatrzymaj() metoda: clearQueue & jumpToEnd.

Natknąłem się na problem z przewijaniem i na początku użyłem zasugerowanego przez Scotty .stop(), ale zauważyłem, że animacja wciąż "walczy", aby zakończyć. Sprawdziłem dokumentację tutaj: .stop() Method Documentation

Dodając .stop(true, false); udało mi się:

1.) usuwać kolejce animacje (tylko w przypadku kilku były wyzwalane/kaskadowy)

2.) zapobiec animację od próby przeskoczenia do jego wartości końcowej.

nadzieję, że pomoże ktoś wali swoją głowę na klawiaturze;)

Powiązane problemy