jquery是否会在已经滑落的元素上触发slidedown动画?

时间:2014-03-08 20:21:23

标签: javascript jquery

我希望这个问题不言自明。我有以下代码:

$(window).scroll(function () {
    var scrollTop = $(window).scrollTop();
    if (scrollTop > sliderTop) {
        $('#slider').slideDown(1000);
    } else {
        $('#slider').slideUp(1000);
    }
});

如果我在某一点后向下滚动,将连续调用slideDown函数。 JQuery一次又一次地为它设置动画,还是足够聪明地知道该元素已经向下滑动? (目前我正在使用一个标志来检查它是否已经滑落)。

1 个答案:

答案 0 :(得分:1)

动画不会再次运行。请参阅jquery src

effect.js的第459-468行
doAnimation = function() {
            // Operate on a copy of prop so per-property easing won't be lost
            var anim = Animation( this, jQuery.extend( {}, prop ), optall );

            // Empty animations, or finishing resolves immediately
            if ( empty || data_priv.get( this, "finish" ) ) {
                anim.stop( true ); // ** here - stopping right after started.
            }
        };
        doAnimation.finish = doAnimation;

但我仍然会建议不要改进代码的可读性。只需使用布尔值,它不会伤害...