jQuery 在 scrollTop() 调用后重置 window 的滚动
jQuery resetting scroll of window after scrollTop() call
我有一个关闭的 canvas 菜单,它从右侧滑入并位于页面顶部。为了防止出现滚动条,我将内容部分的位置设置为在菜单打开时固定。问题是,当我关闭菜单时,页面上的滚动位置丢失,用户返回到页面顶部。
我试图存储页面的滚动位置,然后在 window 关闭时设置滚动,但它不起作用。如果我调试代码,我可以看到 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);
});
很抱歉没有提供足够的 MCVE。
事实证明,问题是事件被绑定到带有“#”href 的 <a>
link,因此添加
return false;
因为 .on 事件的最后一行解决了我的问题。
我有一个关闭的 canvas 菜单,它从右侧滑入并位于页面顶部。为了防止出现滚动条,我将内容部分的位置设置为在菜单打开时固定。问题是,当我关闭菜单时,页面上的滚动位置丢失,用户返回到页面顶部。
我试图存储页面的滚动位置,然后在 window 关闭时设置滚动,但它不起作用。如果我调试代码,我可以看到 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);
});
很抱歉没有提供足够的 MCVE。
事实证明,问题是事件被绑定到带有“#”href 的 <a>
link,因此添加
return false;
因为 .on 事件的最后一行解决了我的问题。