0

ウィンドウをページの一番上までスクロールするために、この小さなスニペットを作成しました。

    $(window).scroll(function(){
        $("#scrollup").fadeIn("slow");
    }); 
    $("#scrollup").click(function(){
        $('html, body').animate({ scrollTop: 0 }, 'normal', function() {
            $("#scrollup").fadeOut("slow");
        });
    });

ただし、ウィンドウのスクロール後にスクロールアップ div がフェードアウトすると、フェードインします。これを防ぐにはどうすればよいですか? ありがとう。


合理的な解決策を見つけたと思う

$(window).scroll(function(){
    if ($(this).scrollTop() > 100) {
        $('.scrollup').fadeIn();
    } else {
        $('.scrollup').fadeOut();
    }
});

これは、元のコードを変更するよりも簡単でしょうか?

4

3 に答える 3

1

スクロールアップ div が一番上にあるとき、または既にフェードインしている場合 (visible) に、スクロールアップ div がフェードインしていないことを確認する必要があります。

$(window).scroll(function(){
    if ( $(window).scrollTop() !== 0 or $("#scrollup").is(":hidden") ) then {
         $("#scrollup").fadeIn("slow");
    }
});
于 2012-04-22T14:37:41.697 に答える
1

if ステートメントを追加して、それが一番上にあるかどうかを確認できます。

$(window).scroll(function(){
    if($("body").scrollTop()!=0)
        $("#scrollup").fadeIn("slow");
    }); 
    $("#scrollup").click(function(){
        $('html, body').animate({ scrollTop: 0 }, 'normal', function() {
            $("#scrollup").fadeOut("slow");
        });
    });​
于 2012-04-22T14:38:21.097 に答える
1

チェックアウト.stop(): http://api.jquery.com/stop/

$(window).scroll(function(){
    if ($(this).scrollTop() > 100) {
        $('.scrollup').stop().fadeIn();
    } else {
        $('.scrollup').stop().fadeOut();
    }
});
于 2012-04-22T14:39:20.333 に答える