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 事件的最后一行解决了我的问题。