Как отключить прокрутку до завершения анимации?

Я использую этот код для прокрутки к определенному элементу на моей странице:

$("html, body").animate({scrollTop: $(".myDiv").offset().top}, 300);

Он работает, но есть одна проблема: когда пользователь прокручивается вниз, пока прокручивается script, наблюдается некоторая ошибка, потому что одновременно есть две команды прокрутки в разных направлениях - звучит логично для меня.

Я проверил некоторые другие сайты с такой функцией прокрутки, нет никакого искажения. Так что трюк, чтобы предотвратить это?

Ответ 1

Это ошибка jQuery, когда вы используете анимацию с прокруткой, хорошее обнаружение.

Я исследовал, как отключить прокрутку и найти этот вопрос: Как временно отключить прокрутку?

Вот jsFiddle. Вы увидите после нажатия; прокрутка прокрутки пользователя до завершения анимации.

$('.myDiv').click(function(){

    disable_scroll();

    $('html, body').stop().animate({ scrollTop: 0 }, 700,function() {
        enable_scroll();
    });
});

edit: благодаря galambalazs btw.