0

ページスクロールに遅延を入れようとしているので、アニメーションを入れても台無しになりません。これが私のコードです:

var lastScrollY = 0,
    delayFlag = true,
    delayTime = 1000;

$(window).on('scroll', function(e) {
    if(delayFlag == true) {
        delayFlag = false;
        var posY = $(this).scrollTop(),
            sectionH = $('.page').height(),
            multiplier = (Math.round(lastScrollY / sectionH));

        if(lastScrollY > posY) {
            $(window).scrollTop((multiplier - 1) * sectionH);
        }
        else {
            $(window).scrollTop((multiplier + 1) * sectionH);
        }

        lastScrollY = posY;

        setTimeout(function() { delayFlag = true }, delayTime);
    }
    else {
        e.preventDefault();
    }
});

jQuerypreventDefault()が機能していません。スクロールイベントを遅らせる方法はありますか?

4

2 に答える 2

2

e.preventDefault();イベントのデフォルト アクションを防止するためのものです。たとえば、アンカーをクリックすると、アンカーの href に保存されているアドレスにページが移動しe.preventDefault();、アンカーのクリック イベントを呼び出すと、この移動が行われなくなります。

e.preventDefault();ただし、発生したばかりのイベントはキャンセルされません。フォーム入力のイベントで呼び出しても、onchangeその値は元の値に戻りません。スクロール イベントで呼び出しても、スクロールはキャンセルされません。

于 2013-06-05T16:26:27.970 に答える