2016-02-26 2 views
-2

У меня есть меню холста, которое сместится справа и сидит в верхней части страницы. Чтобы предотвратить полосу прокрутки, я устанавливаю положение секции содержимого на фиксированное, пока меню открыто. Проблема в том, что когда я закрываю меню, позиция прокрутки на странице теряется, пользователь возвращается в начало страницы.jQuery сброс прокрутки окна после вызова scrollTop()

Я пытаюсь сохранить положение прокрутки страницы, а затем установить прокрутку, когда окно закрыто, но оно не работает. Если я отлаживаю код, я вижу, что scrollTop() функционирует так, как ожидалось, но затем он переходит в скрипт jQuery.js, и после нескольких вызовов функций он сбрасывает прокрутку вверху страницы.

Что я делаю неправильно?

var scrollPos; 

    function openMenu() { 
     $('body').addClass('open'); 
    } 

    function closeMenu(compat) { 
     $('body').removeClass('open'); 
    } 

    /*** Event Handlers ***/ 
    $('#js-menu-toggle').on('click', function() { 
     scrollPos = $(window).scrollTop(); 
     openMenu(); 
    }); 

    $('#js-menu-close').on('click', function() { 
     closeMenu(); 
     $(window).scrollTop(scrollPos); 
    }); 
+2

Возможно, весь ваш код находится внутри функции, а при повторном вызове 'var scrollPos' - повторно инициализируется. Однако в этом примере мы не можем вам помочь. Вам необходимо предоставить минимальный, полный и проверенный пример (MCVE). См. Больше, а затем отредактируйте свой вопрос с помощью правильного рабочего примера: http://stackoverflow.com/help/mcve || http://stackoverflow.com/help/how-to-ask –

+0

Сохраните значение в локальном хранилище или что-то еще, а затем извлеките его и перейдите к этой позиции. Прямо сейчас ваш код повторно инициализирует переменную 'scrollPos'. –

+0

Это внутри моей функции jQuery document.ready, когда я установил точку останова на scrollTop (scrollPos); строка. Я вижу, что правильное значение есть, и если я вхожу в следующую строку, функция работает так, как ожидалось. – Mikey

ответ

0

Приносим извинения за недостаточное предоставление MCVE.

Оказывается, проблема была события были связаны с <a> связи с «#» HREF, так что добавление в

return false; 

как последняя линия .На событий решить мою проблему.

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