2012-02-28 115 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); 
}