2012-07-16 87 views
2

鑑於此場景在jQuery Mobile;兩頁在第一頁上有一個按鈕,用列表視圖打開第二頁,我想阻止在每次顯示第二頁時發生listview的重新初始化。停止jQuery Mobile初始化listview每次顯示頁面

<body> 
    <div data-role="page" data-theme="c" id="page1"> 
    <div data-role="content"> 
     <a id="page1button" href="#page2" data-transition="none" data-role="button">Select an item</a> 
     </div> 
    </div> 
    <div data-role="page" id="page2" data-dom-cache="true"> 
     <div data-role="content"> 
      <ul data-role="listview" data-theme="c" data-filter="true"> 
       <li data-icon="false"><a href="#page1">ABC</a></li> 
       <li data-icon="false"><a href="#page1">BCD</a></li> 
       <li data-icon="false"><a href="#page1">CDE</a></li> 
       <li data-icon="false"><a href="#page1">DEF</a></li> 
      </ul> 
     </div> 
    </div> 
</body> 

此示例代碼只是顯示在列表視圖(保持代碼的短的緣故)4項,但如果有在ListView更多的項目更能夠說明我的問題,足夠的項目,這將導致listview有一個滾動條。

因此,例如,在iPad上,如果listview有80個項目,那麼您會注意到如果您在第二頁上並向下滾動到底部並選擇列表底部的項目, jQuery Mobile可以回滾到第1頁。到目前爲止,沒有問題。但是當你點擊按鈕去返回到第2頁時,那麼listview被重新初始化並再次滾動到頂部。這是我想要防止發生的事情;我希望能夠轉到第1頁,然後返回到第2頁,listview處於與我離開它相同的狀態。

所以我想listview初始化只有一次而不是每次顯示頁面。有沒有人知道在這種情況下listview初始化正在發生?是否可以禁用此操作?

+1

你確定問題是由listview重新初始化引起的嗎?我認爲jQuery Mobile不會在「頁面」之間保持滾動位置。 – 2012-07-16 21:54:30

+0

嗯。我認爲你可能是對的,丹。我想在這種情況下,我將不得不保存選擇的滾動位置,然後在頁面顯示時再次恢復。 – BruceHill 2012-07-16 22:00:03

回答

2

jQuery Mobile不保留頁面之間的滾動位置。儘管如此,您應該能夠捕獲一些頁面導航事件並保留它;當您恢復它時,您可以使用silentScroll來恢復位置,而不觸發許多您不想要的事件。

+0

謝謝,丹的幫助。特別是告訴我有關'silentScroll'的信息。這確實是我需要的。我現在在第二頁的'pageshow'事件中執行這個操作,將滾動條移動到最後選擇的錨點上:$ .mobile.silentScroll(selected.offset()。top); – BruceHill 2012-07-17 07:32:49

相關問題