jQuery Mobile - 滚动到pageload上的特定div

Ste*_*eve 5 jquery-mobile

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

我使用以下代码:

$.mobile.silentScroll($("#myElementId").offset().top);
Run Code Online (Sandbox Code Playgroud)

这样包裹时不能正确滚动:

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

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

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

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

Jas*_*per 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>
Run Code Online (Sandbox Code Playgroud)

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

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