Jquery mobile jQuery Mobile-滚动至pageload上的特定div

Jquery mobile jQuery Mobile-滚动至pageload上的特定div,jquery-mobile,Jquery Mobile,我想在页面加载时自动滚动到特定的div。然而,我似乎与JQM的滚动到顶部功能有一些冲突 我正在使用以下代码: $.mobile.silentScroll($("#myElementId").offset().top); 这样包装时无法正确滚动: $('[data-role=page]').bind("pageshow", function() { $.mobile.silentScroll($("#myElementId").offset().top); }); $('[data-r

我想在页面加载时自动滚动到特定的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);
});
但在这样一个小超时情况下可以正常工作:

$('[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);
});

最后一段代码的问题是它会导致闪烁,先跳到页面顶部,然后再跳到页面下方。有没有办法避免这种情况?

您的
设置超时可以正常工作,因为如果您返回到以前访问过的页面,jQuery移动框架会记住您被滚动到的位置,并且您必须等待他们的滚动完成后才能运行自己的页面。您可以通过将
mobileinit
事件处理程序中的
minScrollBack
选项更改为非常大的选项来禁用此功能:

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

$(document).bind(“mobileinit”,function(){
$.mobile.minScrollBack=90000;
});
这将禁用jQuery Mobile框架在后续访问页面时所做的自动滚动


文档:

关于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>

$(document).bind(“mobileinit”,function(){
$.extend($.mobile{
minScrollBack:90000//关闭滚动到最后一页的位置
});
});
这似乎奏效了


参考:

你们试过答案吗

除非将$.mobile.defaultHomeScroll也设置为所需的滚动,否则它将不起作用

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


然后它就起作用了。

我不需要做太多。。。我把它和下面的部分一起工作

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

谢谢Jasper,但即使在jQuery核心和JQM之间添加了代码,它仍然不起作用。我不认为这是minScrollBack的问题,因为它甚至发生在完全刷新页面之后。此时,JQM应该记不起我之前滚动到的位置。