У меня есть меню холста, которое сместится справа и сидит в верхней части страницы. Чтобы предотвратить полосу прокрутки, я устанавливаю положение секции содержимого на фиксированное, пока меню открыто. Проблема в том, что когда я закрываю меню, позиция прокрутки на странице теряется, пользователь возвращается в начало страницы.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);
});
Возможно, весь ваш код находится внутри функции, а при повторном вызове 'var scrollPos' - повторно инициализируется. Однако в этом примере мы не можем вам помочь. Вам необходимо предоставить минимальный, полный и проверенный пример (MCVE). См. Больше, а затем отредактируйте свой вопрос с помощью правильного рабочего примера: http://stackoverflow.com/help/mcve || http://stackoverflow.com/help/how-to-ask –
Сохраните значение в локальном хранилище или что-то еще, а затем извлеките его и перейдите к этой позиции. Прямо сейчас ваш код повторно инициализирует переменную 'scrollPos'. –
Это внутри моей функции jQuery document.ready, когда я установил точку останова на scrollTop (scrollPos); строка. Я вижу, что правильное значение есть, и если я вхожу в следующую строку, функция работает так, как ожидалось. – Mikey