0

マウスホイール プラグインを使用して、ページのセクションをスクロールしています。

アニメーションが完全に完了するまで、私が書いた関数を無効にするために何を調べる必要がありますか?

stop() を実行していますが、それはアニメーションをキャンセルするだけです。

$('section').mousewheel(function(event, delta, deltaX, deltaY) {

$('section' ).waypoint(function(direction){
    thisID = $(this); 
},{ offset: '25%' });

if (delta > 0) {
    console.log('up');
    if ($(this).not(":first-child")) { 
        //$(this).animate(function(){
        $('html, body').stop().animate({
            scrollTop: thisID.prev().offset().top
        }, 1000);
            //});
    }else {
        $('html, body').stop().animate({
            scrollTop: thisID.offset().top
        }, 1000);
    }
    }
else if (delta < 0) {

    if ($(this).not(":first-child")) { 
        $('html, body').stop().animate({
            scrollTop: thisID.next().offset().top
        }, 1000);
    }
    else {
        $('html, body').stop().animate({
            scrollTop: thisID.offset().top
        }, 1000);
    }

    console.log('down');
}
return false; // prevent default
});
4

2 に答える 2

2

これを行う 1 つの方法は、"stoplight" 変数を作成することです。関数の最初に設定し、関数の引数を使用してアニメーションの最後にFalse再設定します。次に、この変数が の場合にのみメイン関数を実行します。Truecompleteanimate()True

于 2013-08-13T18:49:08.293 に答える
0

車輪を再発明する代わりに、 fullPage.jsなどを検討することをお勧めします。

タッチ デバイス、タッチ スクリーン、古いブラウザ、トラックパッドや Apple ラップトップに存在するキネティック スクロールなどを扱う際の頭痛の種から解放されます。

于 2015-04-07T15:59:00.520 に答える