在步骤中停止jquery动画,然后设置动画属性

在步骤中停止jquery动画,然后设置动画属性,jquery,animation,queue,Jquery,Animation,Queue,我正在制作一个块的移动动画,并使用“步长”选项在每一步检查布尔值是否已切换为true。如果它确实被切换,我想停止动画并将我正在设置动画的属性设置为某个值。这是我现在的密码 $("#block").animate( { bottom: "+=128" }, { duration:200, easing: "easeOutCubic", step: function(){ if( stopped == true ){ $("#block").stop().cs

我正在制作一个块的移动动画,并使用“步长”选项在每一步检查布尔值是否已切换为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属性在step选项中不起作用,而在timeout函数中起作用。或者我只是缺少一些基本的东西。谢谢你的帮助。

回答晚了,但我已经想出了如何在一步之内停止你的动画制作

只需使用
$(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
    }
}

我发现了问题,但不知道如何解决。这可能是有用的:Jquery有
函数动画(元素、属性、选项)
它有
函数勾选
并且该函数中有(;index的循环。第8687行,所以当动画停止并执行
.css('bottom','5px')
时,这个循环会再工作一次并为最后一步设置动画,所以css bottom会发生变化。我还试着玩动画队列,但没用((哇,太棒了。我想这一定是函数正在执行的东西。我认为目前我必须使用超时,因为我试图绕过它的每一件事都没有起作用。我认为这是一个肮脏的修复,但它是最简单和最快的方法。如果我找到解决这个问题的方法,我会告诉你更新:我不长了呃,使用定时器方法,但是我正在设置一个虚拟对象的动画,设置为display:none,并使用步长函数的now值来设置一个单独的对象的动画。在步长函数中,如果超过该值,第二个对象就不会移动。它仍然有点脏,但是视觉上更吸引人,并且不使用定时器(我讨厌计时器)