使用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')
所以你需要将代码更改为:
$.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:跨域 AJAX 调用导致“访问受限 URI 被拒绝”(代码 1012)
使用动画链(jQuery)在 Ipad 上的 ScrollLeft 和 ScrollTop
jQuery动画效果animate和scrollTop结合使用实例