iScroll scrollToElement не работает с jQuery Mobile - PullRequest
2 голосов
/ 28 февраля 2012

У меня есть что-то похожее на этот пример iScroll: http://cubiq.org/dropbox/iscroll4/examples/simple/

За исключением того, что я использую jQuery mobile (т. Е. Верхний и нижний колонтитулы и контент задаются с помощью jQuery Mobile).Все работает гладко, кроме scrollToElement.

Есть ли способ заставить работать scrollToElement при использовании jQuery Mobile и iScroll?

Вот сценарий 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 голосов
/ 05 сентября 2012

Также убедитесь, что вы используете тайм-аут

         setTimeout(function () {
            myScroll.scrollToElement(".elementClass", "0s");
            myScroll.refresh();
        }, 0);
0 голосов
/ 20 декабря 2012

На случай, если кому-то понадобится прокрутить объект 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);
}
0 голосов
/ 09 августа 2012

Обходной путь, который я нашел, состоит в том, чтобы захватить положение элементов и затем использовать scrollToPage():

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

Конечно, чтобы это работало, вам нужно захватить положение, когда элемент видим или смещениебудет бессмысленным.Вы можете сделать это, когда страница построена, но до инициализации скроллера.

В моем случае элемент видим, и я фиксирую w в то время.Затем я обновляю контент и обновляю скроллер.После этого я хочу убедиться, что элемент все еще виден.

...