2012-02-28 86 views
2

工作,我也有類似的這種iScroll例如東西:http://cubiq.org/dropbox/iscroll4/examples/simple/iScroll scrollToElement不與jQuery Mobile的

除了我使用jQuery移動(即頁眉,頁腳和內容使用jQuery Mobile的設置)。除了scrollToElement之外,所有內容都運行平穩。

使用jQuery Mobile和iScroll時有沒有什麼辦法讓scrollToElement工作?

這裏的iScroll劇本我目前有:

var myScroll; 
function loaded() { 
    myScroll = new iScroll('wrapper'); 
} 
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false); 
document.addEventListener('DOMContentLoaded', function() { setTimeout(loaded, 200);}, false); 

編輯:忘了提我想要實現的。在上述iScroll例子,我試圖滾動到特定行。唯一的問題是,jQuery Mobile的防止scrollToElement從出於某種原因的工作。

回答

0

我已經找到了解決辦法是捕捉到的元素位置,然後用scrollToPage()

var w = $("#showselectedauthors").offset().top; 
// ... 
$.storeScroller.scrollToPage(0, w); 

當然這個來工作,你必須捕捉到的位置時,該元素是可見的或偏移將變得毫無意義。您可以在頁面構建之後但在滾動器初始化之前執行此操作。

在我的情況下該元素是可見的,我當時拍攝w。然後我刷新一些內容並刷新滾動條。我這樣做後,我想確保元素仍然可見。

0

還要確保您使用的是超時

  setTimeout(function() { 
      myScroll.scrollToElement(".elementClass", "0s"); 
      myScroll.refresh(); 
     }, 0); 
0

案例有人需要滾動到一個jQuery對象,這裏是我的代碼。 確保您調用setTimeout和你的「iscroll」對象被定義裏面這個方法。

function scrollToElement($element) { 
    if ($element.size() > 1) { 
     throw new Error("Cannot be a node!"); 
    }; 
    var offset = $element.offset().top; 
    var to = -(offset - iscroll.y); 
    to = (iscroll.maxScrollY > to) ? iscroll.maxScrollY : to; 
    iscroll.scrollTo(0, to); 
}