2012-02-21 84 views
5

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

我使用下面的代码:

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

当包裹这样的不正确地滚动:

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

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

但有一点超时喜欢这个工作正常

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

回答

2

您的setTimeout的工作原理是因为jQuery Mobile框架记住了您滚动的位置 - 如果您返回之前访问过的页面,并且必须等到滚动完成才能运行自己的页面。您可以通过改变mobileinit事件处理程序内的minScrollBack选项的东西真正的大实质上禁用此功能:

<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

+0

谢谢Jasper,但即使在jQuery核心与JQM之间添加代码之后,它仍然无法工作。 我不认为这是minScrollBack的问题,因为它甚至发生在整个页面刷新后。那时,JQM不应该记住我之前滚动的位置。 – Steve 2012-02-22 20:54:43

2

第一篇文章在计算器上!

谢谢你们,我一直在做一个项目,它为转换使用了很多自定义动画,虽然花了一段时间才到达这里,但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

0

你们可曾试过答案???

除非您将$ .mobile.defaultHomeScroll设置为您想要的滚动,否则它不起作用。

也就是两个步骤。 1.将$ .mobile.minScrollBack设置为足够大的值。 2.在页面加载时,将defaultHomeScroll设置为期望的值。

然后它工作。

0

我没必要做太多...我在它的部分使用了以下内容。

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