1

データをロードするためのこのコードがあります。ユーザーが画面の半分を下にスクロールすると、データの読み込みとドキュメントへの HTML の追加が続行されます。The problem is $(window).height() doesn't update on the fly after HTML changesそのため、条件式が間違っています。修正方法は?

// Check scrollbar is down a half.
$(window).scroll(function() {
    console.log("flag: " + flag);       
    console.log($(window).scrollTop());
    console.log($(window).height());

    if (($(window).scrollTop()  > $(window).height() / 2)) { 
        if(flag == 0) {
            console.log("Load data");
            loadData(globalIndex, globalCount);
            globalIndex += 40;
        }
        flag = 1;

    } else {
        flag = 0;
    }
});
4

2 に答える 2

2

ブラウザ画面のサイズを変更しない限り、ウィンドウの高さは変わりません。数式の問題は、それを機能させるために、スクロールバーを中点より上に戻すのに十分なデータをロードする必要があることです。そうしないと、この数式は常に true を返し、必要以上に loadData を呼び出すことになります。

考えられる回避策として (データの読み込みにかかる時間によって異なります)、スクロールバーがウィンドウの下部に到達したら、loadData を呼び出すことができます。この条件は、現在の条件よりもはるかに少ない頻度で true になり、ユーザーがデータを表示しようとした場合にのみデータが読み込まれます。データの読み込みが速い場合、これは簡単な解決策です。それが時間のかかるプロセスであり、それが中間点に到達した後にデータをロードすることを選択した理由である場合は、一度により多くのデータをロードし、スピナーまたはその他の視覚的な手がかりを含めて、データが読み込み中。

于 2013-05-28T02:13:43.787 に答える
1
$(window).height()

ブラウザの高さが表示されます (ウィンドウのサイズを変更しない限り一定です)。使用してみてください:

$(document).height() - ($(window).height()/2);

代わりは...

于 2013-05-28T01:55:09.267 に答える