Как заставить функционал scrolltop() работать с Mmenu

Я использую меню jQuery, чтобы добавить меню вне холста на мой сайт. Перед установкой у меня была кнопка прокрутки вверх и скользящая панель навигации, которая основывалась на получении смещения от $(window).scrollTop(); чтобы вызвать их. Я заметил, что mmenu, кажется, мешает найти смещение окна. Когда я запустил следующий код:

var offset = $(window).scrollTop();

$(window).scroll(function(){

     console.log(offset);
});

и, проверив консоль Chrome DevTools, я заметил, что, хотя она выводит смещение, кажется, что есть переопределенное смещение, равное 0, независимо от визуального положения окна и полосы прокрутки.

Вместо этого я попытался найти смещение других элементов, но все равно получаю тот же вывод в консоли.

В конечном счете, я бы хотел, чтобы кнопка прокрутки вверх и скользящая панель навигации срабатывали после прокрутки пользователем вниз.

Мой код для них выглядит следующим образом:

$(window).scroll(function(){

    /* slide-down navigation bar */

    if($('.bar').css('z-index') == '30' && offset > 50 ){

        $('#secondary-nav-wrap').addClass('slideDown');

    }else{

        $('#secondary-nav-wrap').removeClass('slideDown');
    }

    /* fade in jump to top button */

    if (offset >= 200) {

        $('#top-jump').fadeIn(400);
    }else{

        $('#top-jump').fadeOut(400);
    }
});

1 ответ

Решение

Ваша переменная смещения инициализируется при загрузке страницы и не изменяется. Вот почему это всегда 0.

Делать:

$(window).scroll(function(){
     var offset = $(window).scrollTop();
     console.log(offset);
});
Другие вопросы по тегам