2012-04-05 3 views
9

У меня есть несколько якорей, которые ссылаются на определенные разделы (используя хэштеги) на странице, и те, которые прокручиваются до верхней или нижней части окна документа.Замки прокрутки/прокрутки после анимации прокрутки

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

Однако, как только анимация и прокрутка достигли его назначение и завершен, документ прокрутки и прокрутки, кажется, отключить в течение нескольких секунд. Например, если щелкнуть ссылку «Перейти к нижней части страницы», окно моего документа будет правильно прокручиваться до нижней части страницы. Как только я попытаюсь прокрутить резервную копию, она слегка подпрыгивает вверх и вниз, и позволяет мне прокручивать несколько попыток позже.

Любые советы о том, что может быть причиной этого?

ответ

16

Эта нить старый, но я столкнулся с этим и там Арент ответы где угодно, но здесь есть решение:

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

, если пользователь использует полосу прокрутки, а анимация выполняется, он останавливает анимацию.

+0

Ничего себе! Это решило проблему для меня тоже, спасибо за то, что поделились! :) –

+0

Спасибо, спасибо, спасибо! – TWright

7

Просто внести свой вклад в ответ Скотти, вы можете также добавить два варианта метода .stop(): clearQueue & jumpToEnd.

Я столкнулся с проблемой прокрутки и использовал предложенный Скотти .stop() для начала, но заметил, что анимация все еще «борется», чтобы закончить. Я проверил документацию здесь: .stop() Method Documentation

Добавляя .stop(true, false); я был в состоянии:

1.) удалить из очереди анимации (только в случае, если несколько были вызваны/каскадные)

2.) предотвратить анимацию от попытки перейти к его конечной ценности.

Надеюсь, что кто-то еще ударит головой по клавиатуре;)

Смежные вопросы