0

jquerymobile datafilter を使用したリストビューがあり、iscroll を使用しています。datafilter で検索した後、スクロール可能な領域のサイズを変更しないため、Iscroll をリロードしたいと思います (したがって、アイテムから離れてスクロールすることが可能です)。

これは私のhtmlです:

        <div id="mywrapper" class="wrapper">
            <div data-role="content" id="myscroller">
                <ul data-role="listview" id="lstvw_myitems" data-filter="true"></ul>
            </div>
        </div> 

すでに変更イベントを listvw_myitems 変更にバインドしようとしましたが、呼び出されないようです。

これは私が試したことです:

$('#lstvw_myitems').change(function() {
      loadIScroll('wrapper');
});

リストビューでキャッチできる他の(jquery)イベントはありますか?

これは私が使用する Iscroll コードです (タイムアウトは iscroll がロードされたときのバグを修正するためのもので、他のコードはスクロール中の選択を防ぐためのものです)。

function loadIScroll(wrapperId){
setTimeout(function () {
    var myScroll = new iScroll(wrapperId, {bounce: false, hScrollbar: false, vScrollbar: false, vScroll: true, useTransform: true, zoom: false,
        onBeforeScrollStart: function(e){
            var target = e.target;
            while (target.nodeType != 1) target = target.parentNode;
            if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA')
                e.preventDefault();
        }
    });
    }, 1);

}

jqm 1.3 jq 1.9.1 と iscroll v4.2.5 を使用しています。

4

2 に答える 2

0

私もこれをやろうとしています。その長いリストと、誰かがデータを入力すると、Iscroll のサイズが変更されません。私はあなたの方法を試しましたが、100%理解できるとは限りません。どんなアドバイスでも大歓迎です。

ここに私のiscrollコードがあります:

  var myScroll;
var scroll_cookie = readCookie('scrollToAlt');
var back_cookie = readCookie('previousPagePath');
function loaded() 
   {
   myScroll = new iScroll('wrapper',
       {scrollbarClass: 'myScrollbar',
            hideScrollbar:false,
       });
        if ($('#scroller').height() <= $('#wrapper').height()){
           myScroll.destroy();
           myScroll = null;
        }
   }
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
document.addEventListener('DOMContentLoaded', loaded, false);

$(document).on('pagebeforeshow',"*", function(e, data){
    //bind keypress of datafilter to resize iscroll
    $('.ui-input-search > input').bind("keyup",function(){
    myScroll.refresh();
    });
});
于 2013-07-12T17:27:18.643 に答える