jQuery Mobile - 滚动到页面加载时的特定div

时间:2012-02-21 23:58:30

标签: jquery-mobile

我想在页面加载时自动滚动到特定的div。但是,我似乎与JQM滚动到顶级功能发生了冲突。

我使用以下代码:

$.mobile.silentScroll($("#myElementId").offset().top);

在包装时不能正确滚动:

$('[data-role=page]').bind("pageshow", function() {
    $.mobile.silentScroll($("#myElementId").offset().top);
});

但正常工作,有点像这样的超时:

$('[data-role=page]').bind("pageshow", function() {
    setTimeout(function(){$.mobile.silentScroll($("#myElementId").offset().top);},100);
});

最后一段代码的问题是它会导致闪烁,跳转到顶部然后跳转到页面。任何想法如何避免这种情况?

4 个答案:

答案 0 :(得分:2)

您的setTimeout有效,因为jQuery Mobile框架会记住您滚动到的位置,如果您要返回之前访问过的页面,则必须等待滚动完成才能运行自己的滚动。您可以通过将minScrollBack事件处理程序中的mobileinit选项更改为非常大的内容来禁用此功能:

<script src="[jQuery Core]"></script>
<script>
$(document).bind("mobileinit", function(){
   $.mobile.minScrollBack = 90000;
});
</script>
<script src="[jQuery Mobile]"></script>

这应禁用jQuery Mobile框架在您后续访问时访问页面时所执行的自动滚动。

文档:http://jquerymobile.com/demos/1.0.1/docs/api/globalconfig.html

答案 1 :(得分:2)

StackOverflow上的第一篇文章!

多亏了这一点,我一直在研究一个项目,它使用相当多的自定义动画进行过渡,虽然花了一段时间才到达,但Jasper的回答让我朝着正确的方向前进,它只是遗漏了一点代码:

<script src="[jQuery]"></script>
<script>
$(document).bind("mobileinit", function(){
    $.extend($.mobile, {
        minScrollBack: 90000 // turn off scrolling to position on last page
    });
});
</script>
<script src="[jQuery mobile]"></script>

这似乎可以解决问题!

参考:http://jquerymobile.com/test/docs/api/globalconfig.html

答案 2 :(得分:0)

你们有没有尝试过答案?

除非你将$ .mobile.defaultHomeScroll设置为你想要的卷轴,否则它不起作用。

即两步。 1.将$ .mobile.minScrollBack设置为足够大的值。 2.在页面加载时,将defaultHomeScroll设置为所需的值。

然后它有效。

答案 3 :(得分:0)

我没有做太多的事情......我在下一节中使用了以下内容。

<script>$(function() {$.mobile.defaultHomeScroll = $(window).scrollTop();});</script>