0

我试图在用户滚动时隐藏一个 ID 为 #stats 的按钮,然后我希望它在他们完成滚动后淡入。

由于某种原因,这在下面不起作用。

谢谢你的帮助!

<button id="stats">
    <span class="icon prs">&#59146;</span><h3 id="views" class="prm">@file.views</h3>
    <span class="icon prs">&#59160;</span><h3 id="comments">20</h3>       
</button><!--end stats-->


<script>
    //fade stats in on load
    $(function(){  // $(document).ready shorthand
        $('#stats').hide().fadeIn('slow');
    });

    //hide stats when scrolling
    var $stats = $("#stats");
    var opacity = $stats.css("opacity");
    var scrollStopped;

    var fadeInCallback = function () {
        if (typeof scrollStopped != 'undefined') {
            clearInterval(scrollStopped);
        }

        scrollStopped = setTimeout(function () {
            $stats.animate({ opacity: 1 }, "slow");
        }, 200);
    };

    $(window).scroll(function () {
        if (!$stats.is(":animated") && opacity == 1) {
            $stats.animate({ opacity: 0 }, "slow", fadeInCallback);
        } else {
            fadeInCallback.call(this);
        }
    });
</script>
4

1 回答 1

4

我会尝试简化一点,并做更多这样的事情:

$(function(){
    var stats = $('#stats'),
        vis   = true;
        timer,


    stats.hide().fadeIn('slow');
    $(window).on('scroll', function() {
        clearTimeout(timer);
        if (vis) {
            stats.stop(true,true).fadeOut('slow');
            vis = false;
        }
        timer = setTimeout(function() {
            stats.stop(true,true).fadeIn('slow');
            vis = true;
        }, 400);
    });
});

小提琴

于 2013-02-24T04:50:25.293 回答