Jquery动画功能步骤参数未在每个步骤中进行评估

时间:2014-02-19 06:36:35

标签: jquery

我想检查Jquery animate函数的step函数中指定的一个条件。但是,由于某种原因,步骤函数只执行了几次,似乎没有执行动画的每一步。我想在运动的每一步检查一个条件,这样我就可以在满足条件的情况下改变动画。

以下是代码:

// orig position of #testball is 0px left and 0px top
$("#testball").animate({
            left:"500px",
            top :"500px"
            }, {
           speed: "slow",
           step: function(now, fx) {
            alert("hello");

                 if((testball.offsetLeft >= barline5.offsetLeft) && (testball.offsetLeft <= barline5.offsetLeft))
                 {                       
                     testball.style.backgroundColor = "yellow";
                 }
        }
      });

我希望在对象的每个小移动上执行步进功能。但是在这种情况下,当从0px动画到500px时,步进函数仅被调用4-5次(我认为它将在每个像素动画上执行)。因此,条件未得到适当评估。

如果您知道为什么每次小动作都没有执行步进功能,请分享。

1 个答案:

答案 0 :(得分:0)

step实际上会为您在动画中制作动画的每个属性调用。因此,如果要为n个属性设置动画,则在每个补间动作期间,步骤将被调用n次。

就我个人而言,我相信progress可能对你要做的事更有意义吗? (我猜,在动画的每一步之后检查一个条件?)

这是一个证明这一点的小提琴:

http://jsfiddle.net/YWAE5/1/

因为我们正在为顶部和左侧设置动画( 2个属性 ),所以应将步骤称为 2x 次超过进步功能。添加其他属性,该数字将继续增加。

(可能性能受到影响......)