我想检查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次(我认为它将在每个像素动画上执行)。因此,条件未得到适当评估。
如果您知道为什么每次小动作都没有执行步进功能,请分享。
答案 0 :(得分:0)
step
实际上会为您在动画中制作动画的每个属性调用。因此,如果要为n个属性设置动画,则在每个补间动作期间,步骤将被调用n次。
就我个人而言,我相信progress
可能对你要做的事更有意义吗? (我猜,在动画的每一步之后检查一个条件?)
这是一个证明这一点的小提琴:
因为我们正在为顶部和左侧设置动画( 2个属性 ),所以应将步骤称为 2x 次超过进步功能。添加其他属性,该数字将继续增加。
(可能性能受到影响......)