我有类似于这个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工作。
答案 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);
}