【发布时间】:2012-03-03 08:36:00
【问题描述】:
以下 JQuery 代码将页面滚动到表单中的第一个错误:
$('html,body').stop().delay(500).animate({scrollTop: $errors.filter(":first").offset().top -30},'slow');
但是,如果我将$('html,body') 替换为容器元素的名称,例如具有固定定位的div 类$('.myDivClass'),它似乎效果不佳。它只是在每次提交时上下滚动到随机位置。如果容器元素是 html,body 以外的任何内容,它似乎无法正常工作。
我不知道我做错了什么。
容器元素的 css 看起来像这样(所以你知道我的意思):
.mcModalWrap1{
position:fixed;
top:0;
left:0;
width:100%;
padding:50px;
background-image:url(images/overlay.png);
overflow:auto;
z-index:999;
display:none;
}
我曾尝试使用 position() 而不是 offset() 进行相对定位,但没有任何区别。
谢谢!
更新:似乎没有解决方案。
【问题讨论】:
-
您在哪个浏览器中看到了这种行为?在 Chrome 17 中,它似乎工作正常。当我提交表单时,它会滚动到第一个错误。如果第一个错误是名称,则它会滚动到页面顶部。如果第一个错误进一步向下,那么它会将我滚动到输入元素。
-
在我所有的浏览器中它都做同样的事情。 IE、FF、Chrome、Opera。内联版本虽然工作得很好。
-
@Jasper,你不是上下交替移动吗?
-
在容器内滚动...试试这个漂亮的 jQuery 插件...非常灵活! demos.flesler.com/jquery/scrollTo