Получить позицию прокрутки панели с помощью SplitView (jQuery Mobile)

StackOverflow https://stackoverflow.com/questions/9329305

Вопрос

Я внедрил веб -приложение с помощью SplitView - http://asyraf9.github.com/jquery-mobile/ - (И это, кажется, использует компонент ScrollView) вместе с JQUERY Mobile. Все работает нормально ...

В панели у меня есть список элементов, которые должны динамически добавлять элементы, когда прокрутка достигает конца списка. На iPhone я не использую SplitView, но IScroll - http://cubiq.org/iscroll - и следующий код для достижения этого (и он работает).

HTML:

<div data-role="panel" data-id="menu" data-hash="crumbs" style="z-index: 10000;" id="Panel">
    <div data-role="page" id="Root" class="Login" onscroll="console.log('onscroll');">
        <div data-role="content" data-theme="d" onscroll="console.log('onscroll');">
            <div class="sub">
                <ul data-role="listview" data-theme="d" data-dividertheme="a" class="picListview" id="PortfolioList">
                    <!-- Content added dynamically -->
                </ul>
            </div>
        </div>
    </div>
</div>

JavaScript:

var defaultIScrollOptions = { 
    useTransition: true, 
    onScrollStart: function() { 
        this.refresh();
    }, 
    onScrollEnd: function() { 
        if (this.elem && this.id) { 
            possiblyDisplayNextDocuments(this.y, this.elem, this.id); 
         } 
    }
};
iScrolls.push(new iScroll(document.getElementById("searchResults").parentNode, defaultIScrollOptions));

Но при использовании SplitView я действительно не знаю, в каком событии, а какой элемент связывает слушателя или как получить позицию прокрутки. Я уже пробовал несколько комбинаций, но не достиг хороших результатов. Лучшим было следующее:

$("#PortfolioList").scrollstop(function(event) {
    console.log("scrollstop: "+$("#PortfolioList").scrollTop());
});

Мой вопрос: использую ли я правильного слушателя событий (поскольку он уже запускает, хотя анимация прокрутки все еще используется) и как мне получить позицию прокрутки?

Это было полезно?

Решение

Не используйте плагин ScrollView. это багги. Используйте ISCROLL как для приложений для iOS PhoneGap, так и для Android. Это отлично работает на обоих.
Для обнаружения свитка и загрузки новых элементов в список, прослушайте событие «OnscrollMove» IScroll.
В iscroll-wrapper.js добавить это-

 options.onScrollMove = function(){
      that.triggerHandler('onScrollMove', [this]);
    };

Затем в вашем коде прикрепите обработчик событий к событию OnscrollMove и обрабатывайте добавление новых строк в это.
Onscrollmove будет стрелять, когда вы прокрутите.
В обработчике вы можете найти, сколько строк есть в вашем списке и то, что строка находится в верхней части вашего порта View, используя что -то вроде

 iscrollScrollEventHandler:function(event){
    var contentDiv= $('div:jqmData(id="main") .ui-page-active div[data-role*="content"] ul li' );
    var totalItemsonList =   contentDiv.length;

    var cont =$('div:jqmData(id="main") .ui-page-active div:jqmData(role="content")');

    var itemToScrollOn =  totalItemsonList - x; // x is the item no. from the top u want to scroll on. u need to keep updating i guess
    var docViewBottom = $(cont).scrollTop() + $(cont).height();
    var itemOffset = $(contentDiv[itemToScrollOn]).offset();
    if(itemOffset){
        var elemTop = itemOffset.top;
        if (elemTop <= docViewBottom){
            event.data.callback();
        }
    }
}

и в обратный вызов добавьте код, чтобы добавить новые строки. надеюсь, это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top