2

サイトのページネーションを取り除くために、無限スクロールを使用したいと思います。ただし、私が見つけたこのスクロール機能には、いくつかの癖があるようです。たとえば、上にスクロールすると発火するように見えます。下にスクロールするときにのみスクロール イベントを発生させる方法はありますか? また、マウスホイールや矢印、スペースバーが押されている場合ではなく、ページの動きを追跡しているように、スクロールバーがないとまったく発火しないようです。良いスクロール検出機能はありますか?

$(window).scroll(function () {

    if ($(window).scrollTop() >= $(document).height() - $(window).height() - 10) {

        //infinite scrolling is the idea

    }

});

ありがとう!

4

1 に答える 1

5

あなたが探していた式はこれです

document.body.scrollTop >= (document.body.scrollHeight - window.innerHeight - 50)

bodyこれは、要素に実際にはセットがなく、またはに設定されていないheightことを前提としています。overflowhiddenscroll

これは、50ピクセルのしきい値内にある限り、上にスクロールしても機能します。ただし、前のスクロールオフセットを保存して、それが増加した場合にのみ何かを行うことができます。

var lastScrollTop = 0;
$(window).scroll(function(e) {
    var body = $("body")[0],
        scrollTop = body.scrollTop;

    if (scrollTop > lastScrollTop) {
        if (scrollTop >= (body.scrollHeight - window.innerHeight - 50)) {
            // do something
        }
    }
     lastScrollTop = scrollTop;
});
于 2012-08-14T23:44:38.950 に答える