【问题标题】:Jquery animate() once then stopJquery animate() 一次然后停止
【发布时间】:2014-02-17 19:06:31
【问题描述】:

当我向下滚动到它的位置时,我试图让一个盒子动画,但动画不会停止,元素只会永远重复动画。 我使用的代码:

jQuery(document).scroll(function (e) {
    var value = jQuery(this).scrollTop();
    if (value = 600) {

        jQuery( "body" ).addClass( "scroll" );
        jQuery('#car1').animate({top: '+=50px'}, 2000);
     }




    });

【问题讨论】:

  • value = 600 是赋值而不是比较,使用=== 或==。

标签: javascript jquery animation jquery-animate


【解决方案1】:

单个= 不是比较运算符。它实际上是为你的变量赋值。

话虽如此,你的情况:

 if (value = 600)

始终为真,因为 600 是一个真值。

尝试使用== 或===。

动画一次,你可以使用你在body上输入的类。只需反转你的 2 行并做一个条件:

if(!jQuery("body").hasClass("scroll")) //Animate only if it haven't the class scroll
     jQuery('#car1').animate({top: '+=50px'}, 2000);
jQuery( "body" ).addClass( "scroll" );

【讨论】:

  • 我发现 scrollTop() 不会接受任何参数,所以基本上每当我向下滚动页面时动画就会开始。那是第一个问题。第二个是动画播放一次后我似乎无法停止。
  • 哦,我虽然你在做top : 50px 并没有看到需要检查动画。正在努力。
  • 我只是通过将 +=50 更改为 +50 来让动画只播放一次 现在我唯一需要的是检测滚动的高度,以便元素只有在它变得可见时才会动画.
  • 不。但我将值更改为 3,不知何故它现在似乎可以工作了。关于用于滚动值的指标的任何线索?
  • @user3320455 ,我有点愚蠢,因为我没有早点发现,但是使用== 几乎永远不会起作用,因为 srollTop 值为 600 的机会很小。试试value >= 600;。
猜你喜欢
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-21
相关资源
最近更新 更多