使用jQuery确认和scrollTop导致页面向上滚动然后向下滚动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用jQuery确认和scrollTop导致页面向上滚动然后向下滚动相关的知识,希望对你有一定的参考价值。

我在项目中使用jQuery-confirm库,当与jQuery一起使用时,页面会滚动到顶部,然后向右滚动到底部。这是代码:

$.alert({
    boxWidth: '50%',
    useBootstrap: false,
    title: '<p>Questionnaire Errors Found</p>',
    titleClass: 'alert_title',
    content: "<p class='alert_body'>Errors were found in the submitted questionaire and are highlighted in red

Please review and correct the missing information</p>",
    buttons:    {
        okay:   {
            text: 'Okay',
            btnClass: 'alert_button',
            action: function()  {

                $('html').animate({
                    scrollTop: $('#voters_guide_form').offset().top
                        }, 500);

                    }
                }
            }
        });

如果我不使用确认库,行为将按预期工作。也不使用animate并不会使页面完全滚动。我已经尝试在动画中使用html,body,没有任何变化,我已经在警报代码内外移动了动画代码,但它仍然做同样的事情。

通过他们的文档和互联网,我似乎无法找到这样的东西。

答案

你应该使用$('body')而不是$('html')

Answer source

所以你需要将代码更改为:

$.alert({
    boxWidth: '50%',
    useBootstrap: false,
    title: '<p>Questionnaire Errors Found</p>',
    titleClass: 'alert_title',
    content: "<p class='alert_body'>Errors were found in the submitted questionaire and are highlighted in red

Please review and correct the missing information</p>",
    buttons:    {
        okay:   {
            text: 'Okay',
            btnClass: 'alert_button',
            action: function()  {
                 //Changed to body and added stop
                $('body').stop().animate({
                    scrollTop: $('#voters_guide_form').offset().top
                        }, 500);
                    }
                }
            }
        });

此外,在运行新动画之前,最好停止在body中运行的动画。这就是我添加stop()方法的原因。

请注意:如果您通过iframe导入此代码,它将无法工作,因为使用iframe,您的页面现在将有2个(或更多)主体,$('body')应返回数组而不是对象。

以上是关于使用jQuery确认和scrollTop导致页面向上滚动然后向下滚动的主要内容,如果未能解决你的问题,请参考以下文章

jQuery scrollTop 直到滚动后才更新

jQuery:跨域 AJAX 调用导致“访问受限 URI 被拒绝”(代码 1012)

使用动画链(jQuery)在 Ipad 上的 ScrollLeft 和 ScrollTop

jQuery动画效果animate和scrollTop结合使用实例

scrollTo() 和 jquery scrollTop() 在 Chrome 中不起作用

是否可以使用 jQuery 为 scrollTop 设置动画?