Функция закрепления Jquery не работает при быстрой прокрутке вверх

Я использую функцию внутри объекта для преобразования боковой панели в верхнюю панель при прокрутке.

Выглядит так (я "минифицировал код и удалил имя объекта"):

$(document).on("scroll", vars.stickyNav );

var vars = { ... etc

    undoStick: function() {
        vars.sticked = false; 
        vars.stickyMenu.removeClass('_sticked');

        return vars.stickyMenu.animate({ 'top': '-60px' }, 0, function() {
            vars.clone.css({'left':-32,display:'none'});
        });
    },

    stickyNav: function() {
        if ( ! vars.sticked && vars.stickyHeight <= vars.scrollTop ) {
            vars.sticked = true;

            return vars.stickyMenu.addClass('_sticked').animate({ 'top': '40px'}, 0, function(){
                vars.clone.show(null);
                vars.clone.css('left',0);
            });
        } 
        else if ( vars.sticked && vars.stickyTop >= vars.scrollTop ) {
            return vars.undoStick();
        }
    }
}

Проблема в том, что... если я очень быстро прокручиваю страницу снизу вверх, панель не прилипает к краю. Если я прокручиваю нормально/медленно/нормально быстро, это работает.

Большинство переменных определены вне функции прокрутки. есть дополнительная функция прокрутки, привязанная к окну, которая обновляет переменную $(window).scrollTop() при прокрутке.

Что может быть причиной такого поведения? Функции анимации установлены на 0 мс.

PS: Есть css переход (кубический безье).


person user2429266    schedule 10.02.2014    source источник
comment
Это может быть связано с шагами прокрутки. Будет ли это работать, если вы поместите крошечную задержку на функцию триггера?   -  person Shomz    schedule 10.02.2014
comment
Как я мог это сделать? установить время ожидания?   -  person user2429266    schedule 10.02.2014
comment
Похоже, это зависит от высоты документа. Чем выше документ, тем больше ошибок. Слишком много событий запущено?   -  person user2429266    schedule 10.02.2014
comment
в порядке. если я использую $(window).scrollTop() вместо переменной, заполненной другой функцией прокрутки, она работает.   -  person user2429266    schedule 10.02.2014


Ответы (1)


Нашел проблему. Если я конвертирую анимацию() в css(), все работает нормально. Спасибо.

Сорри, поститься. Работает лучше, но не всегда.

person user2429266    schedule 10.02.2014