我正在动画一个块移动并使用step选项在每一步检查布尔值是否已切换为true。如果它被切换,我想停止动画并将我动画的属性设置为某个值。这是我现在的代码
$("#block").animate( { bottom: "+=128" },
{ duration:200,
easing: "easeOutCubic",
step: function(){
if( stopped == true ){
$("#block").stop().css("bottom", "none");
$("#block").css("bottom", "5px");
//setTimeout( function(){ $("#block").css("bottom", "5px"); }, 1);
}
},
complete: function(){
//complete function
}
}
);
如果我将代码延迟甚至1毫秒(注释行),它就可以工作。我愿意使用它,如果没有其他方法,但我更有兴趣知道为什么设置css属性在步骤选项中不起作用,但在超时函数内工作。或者,如果我只是遗漏了一些基本的东西。谢谢你的帮助。
答案 0 :(得分:0)
最新答案,但是我想出了如何在一步之内停止动画的操作。
只需使用$(this).stop()
。然后,您可以设置最终属性:
$("#block").animate( { bottom: "+=128" }, {
duration:200,
easing: "easeOutCubic",
step: function(now, fx) {
if( stopped == true ) {
$(this).stop();
$("#block").css("bottom", "none");
$("#block").css("bottom", "5px");
}
},
complete: function() {
//complete function
}
}