jquery-steps:如何防止页面滚动到顶部?

god*_*nte 4 javascript jquery dom jquery-steps

我正在测试jquery-steps插件,如果我单击NextPrevious按钮(在底部)并且窗口顶部位于步骤'div top之下(即如果我的浏览器窗口高度太短,就会发生这种情况) ),滚动跳到身体顶部.

显然没有办法阻止这种情况,我尝试了一切,包括编辑插件代码.我唯一能做的就是通过在onStepChanging事件中添加一些代码来设置不同的滚动位置:

$("#steps-container").steps({
        /* ... */
        onStepChanging: function(event, currentIndex, priorIndex)
        {
            var top = 300;
            var pos = $(window).scrollTop();
            if (pos > top + 48)
            {
                $('body').scrollTop(top);
            }
            return true;
        },
        labels:
        {
            /* ... */
        },
        onFinishing: function (event, currentIndex) { submitOrderForm(); return true; }
    });
Run Code Online (Sandbox Code Playgroud)

有人可以帮我整理一下吗?谢谢!

Jos*_*son 5

幸运的是,我认为我找到了解决方案.

不幸的是,它涉及制作您自己编辑的插件版本,因为开发人员没有为此提供选项,或者公开此功能以进行覆盖.

在该函数中refreshStepNavigation,注释掉或删除以下代码(在未公开的版本中的第870行:

currentOrNewStepAnchor.focus();
Run Code Online (Sandbox Code Playgroud)

我无法看到任何与修改滚动位置或查找源中元素的顶部偏移有关的事情,因此它可能会尝试聚焦一些导致浏览器跳转到它的元素.在一个快速的jsfiddle尝试这个似乎工作...