0

私は新しい開発者で、複数のページにスクロール可能なコンテンツを表示する jQTouch アプリケーションを作成しようとしています。iscroll を使用することにしましたが、ホームページでのみ正常に動作します。各ページの後に iscroll を更新する必要があることを読みましたが、これを行う方法が完全にわかりません。これが私のスクリプトです:

<script type="text/javascript">
    var myScroll, myScroll2;
    function loaded() {
        setTimeout(function () {
            myScroll = new iScroll('wrapper1');
        }, 100);
        setTimeout(function () {
            myScroll2 = new iScroll('wrapper2');
        }, 100);
    }

    document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
    document.addEventListener('DOMContentLoaded', loaded, false);
</script>

私のhtmlには、divにラバーバンド効果がid="wrapper1"ある2番目のページに移動するまで正常に機能するdivがあります。id="wrapper2"

4

2 に答える 2

1

あなたがまだこれを理解していない場合(私はあなたが知っていると確信していますが)、あなたが望む:

myScroll.refresh()

また

myScroll2.refresh()
于 2011-12-12T16:09:23.997 に答える
0

ようやくこれが機能しました。jQTOuch と iScroll をうまく連携させるには、JQTouch がスクロール領域を非表示にするたびに、ページのスクロール領域をリセットする必要があります。つまり、div を非表示にすると、iScroll は次に表示されたときに何をスクロールすればよいかわかりません。その結果、悪名高いラバーバンド効果が得られます。これを解決するには、div が呼び出された直後にスクロール領域をリセットするイベント リスナーを追加するだけです。必ず 100 ~ 300 ミリ秒の遅延を与えてください。以下のコードは、変数が呼び出されていることを前提としていますmyScroll

$(".about").tap(function(){
    setTimeout(function(){myScroll.refresh()},300);
});

補足として、iScroll を使用して複数のスクローラーを確立する方法を次に示します。

var scroll1, scroll2;
function loaded() {
    scroll1 = new iScroll('wrapper1');
    scroll2 = new iScroll('wrapper2');
}
于 2012-09-12T01:14:05.243 に答える