Задать вопрос

Как отследить конец анимации, созданной с помощью .animate()?

Есть обработчик ивента, который прокручивает до нужного ID если мы пытаемся проскроллить какой-то блок вниз:
function FifthSpeaker(e) {
    e.preventDefault();
    var scrolling = e.originalEvent.wheelDeltaY || e.originalEvent.detail*-1;
    if (scrolling < -1 ) {
      console.log(scrolling);
      $('body,html').animate({ scrollTop: $('#fifth-speaker').offset().top }, 1000);
    }
}

Но беда в том, что после того, как анимация прошла, какое-то время (1-3 секунды) скроллить не получается, ибо стоит preventDefault(). Можно ли как-то отследить конец .animate(), после чего просто возвращать возможность скроллить?
  • Вопрос задан
  • 793 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Решения вопроса 1
@JuniorNoobie
Сижу в поддержке, пишу мелкие проекты
Добрый вечер!
Можете использовать callback функцию:

.animate({ scrollTop: $('#fifth-speaker').offset().top }, 1000, function() {
    // Animation complete.
  });
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы