2

我有类似于这个 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 工作。

4

3 回答 3

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);
}
于 2012-12-20T18:07:57.397 回答
0

还要确保您使用的是超时

         setTimeout(function () {
            myScroll.scrollToElement(".elementClass", "0s");
            myScroll.refresh();
        }, 0);
于 2012-09-05T17:20:56.367 回答
0

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

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

当然,要使其工作,您必须在元素可见时捕获位置,否则偏移量将毫无意义。您可以在页面构建时但在滚动条初始化之前执行此操作。

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

于 2012-08-09T15:40:12.623 回答