我想在页面加载时自动滚动到特定的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);
});
最后一段代码的问题是它会导致闪烁,跳转到顶部然后跳转到页面。任何想法如何避免这种情况?
答案 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>
这似乎可以解决问题!
答案 2 :(得分:0)
你们有没有尝试过答案?
除非你将$ .mobile.defaultHomeScroll设置为你想要的卷轴,否则它不起作用。
即两步。 1.将$ .mobile.minScrollBack设置为足够大的值。 2.在页面加载时,将defaultHomeScroll设置为所需的值。
然后它有效。
答案 3 :(得分:0)
我没有做太多的事情......我在下一节中使用了以下内容。
<script>$(function() {$.mobile.defaultHomeScroll = $(window).scrollTop();});</script>