1
$(window).scroll(function() {
        var yDistance = $('html, body').scrollTop();
        //var el = $(this).get(0);
        //if (el.offsetHeight + el.scrollTop >= el.scrollHeight) {
        //if ((yDistance + $(window).height()) > ($.mobile.activePage.children('.ui-content').height() - 150)) {
        if ($(window).scrollTop() == $(document).height() - $(window).height()) {

            if (!lastIndexReached) {
                pageIndex++;
                GetWallpapers(pageIndex, pageSize);
            }
        }
    });

上記のコードでは、ページがページの一番下までスクロールされると、新しい ajax リクエストが呼び出され、リストに追加されます。 Google nexus 7で実行しましたが、起動していません。Googleでスニペットにコメントされているいくつかの修正を試みましたが、役に立ちませんでした。

私はjquerymobile + phonegapを使用しています。

4

2 に答える 2

0

私はメソッドを作成し、このように呼び出しました

setInterval('checkScroll()'、1000);

function checkScroll() {
    if ($(this).scrollTop() + $(this).height() >= ($(document).height() - 100)) {

        if (lastIndexReached == false && process==false) {
            process = true;
            console.log(pageIndex);
            pageIndex++;
            GetWallpapers(pageIndex, pageSize);
        }
    }
}

GetWallpapers()メソッドは、スクロールが一番下になるたびに約10回呼び出されたため、値がfalseに変更され、GetWallpapers()メソッドが呼び出されると、その値がtrueになり、新しいhtmlがdomに追加されるときに変数プロセスを作成しました。その値を再びfalseに設定しました。

このようにして、@IvanIvkovićのおかげで問題のあるバンドルを解決しました。ヘルプマンに感謝します。

于 2013-02-27T10:50:46.020 に答える
0

私にとって、問題はビューポートの設定に関連していることが判明しました。実際にはあまりテストしませんでしたが、ユーザースケーリングをオフにするとうまくいったことは間違いありません。後世のための私の完全なビューポートタグは次のとおりです。

<meta name="viewport" content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0'>

また、oldschoool Paul Irish バージョンの代わりにAjax Infinite Scrollプラグインに切り替えましたが、ビューポート属性を変更する前に、そのプラグインにも同じ問題がありました..

于 2015-08-20T19:09:15.080 に答える