2012-02-21 83 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>