iScroll scrollToElement不能与jQuery Mobile一起使用

时间:2012-02-28 06:32:18

标签: jquery-mobile iscroll

我有类似于这个iScroll示例的内容:http://cubiq.org/dropbox/iscroll4/examples/simple/

除了我正在使用jQuery mobile(即,使用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工作。

3 个答案:

答案 0 :(得分:0)

我找到的解决方法是捕获元素位置,然后使用scrollToPage()

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

当然,为了实现这一点,你必须在元素可见时捕获位置,否则偏移将毫无意义。您可以在构建页面时但在初始化滚动条之前执行此操作。

在我的情况下,元素是可见的,我当时捕获w。然后我刷新一些内容并刷新滚动条。在我这样做之后,我想确保元素仍然可见。

答案 1 :(得分:0)

还要确保您正在使用超时

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

答案 2 :(得分: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);
}