Javascript Jquery动画回调问题

Javascript Jquery动画回调问题,javascript,jquery,animation,Javascript,Jquery,Animation,我正在尝试用jQuery构建一个简单的旋转木马动画。任何时候都有3个可查看的图像,通过按钮在每一侧单击可前进或后退。中心图像被提升30像素以突出显示。当按下其中一个按钮时,中心图像应下降,然后所有三个图像一起向左或向右移动 初始的“向上”和“向下”动画可以工作,但在回调时,其他动画都无法工作。如果我硬编码的方向,他们只有一个工作。我当前的代码或方法是否有问题 ctr_right.click(function() { carouselAnimate("right") }); ctr_left.cl

我正在尝试用jQuery构建一个简单的旋转木马动画。任何时候都有3个可查看的图像,通过按钮在每一侧单击可前进或后退。中心图像被提升30像素以突出显示。当按下其中一个按钮时,中心图像应下降,然后所有三个图像一起向左或向右移动

初始的“向上”和“向下”动画可以工作,但在回调时,其他动画都无法工作。如果我硬编码的方向,他们只有一个工作。我当前的代码或方法是否有问题

ctr_right.click(function() { carouselAnimate("right") });
ctr_left.click(function() { carouselAnimate("left") });

function carouselAnimate(direction) {
    var offset = img_width + img_offset;
    img_focus.animate({"top": "+="+focus_offset}, "slow", function() {
        img_left.animate({direction: "-="+offset}, "slow"); 
        img_focus.animate({direction: "-="+offset}, "slow");    
        img_right.animate({direction: "-="+offset}, "slow");    
    });

};

我认为方向应该始终是“左”,根据我假设的方向,您需要添加或删除偏移。我认为,在设置左/右位置之间切换不是一个好方法

我不太清楚的是,为什么你要用同样的方式分别制作几个东西的动画。这不也行吗

ctr_right.click(function() { carouselAnimate("right") });
ctr_left.click(function() { carouselAnimate("left") });

function carouselAnimate(direction) {
    var offset = img_width + img_offset;
    img_focus.animate({"top": "+="+focus_offset}, "slow", function() {
        $(img_left, img_focus, img_right).each(function(){
           $(this).animate({direction: "-="+offset}, "slow");
        }); 
    });

};
最后的想法;如果上面没有回答您的问题,请查看jquery的动画选项中的queue:false


我认为方向应该始终是“左”,根据我假设的方向,您需要添加或删除偏移。我认为,在设置左/右位置之间切换不是一个好方法

我不太清楚的是,为什么你要用同样的方式分别制作几个东西的动画。这不也行吗

ctr_right.click(function() { carouselAnimate("right") });
ctr_left.click(function() { carouselAnimate("left") });

function carouselAnimate(direction) {
    var offset = img_width + img_offset;
    img_focus.animate({"top": "+="+focus_offset}, "slow", function() {
        $(img_left, img_focus, img_right).each(function(){
           $(this).animate({direction: "-="+offset}, "slow");
        }); 
    });

};
最后的想法;如果上面没有回答您的问题,请查看jquery的动画选项中的queue:false


这是您的完整代码吗?在哪里使用方向?同意,需要更多代码。在CSS对象中加上“+=”和“-=”我很确定这样做是行不通的。还有更多的代码,但这是相关的东西。从我在顶部的解释来看,变量本身就是一种解释@mVChr来自“动画属性也可以是相对的。如果提供的值带有前导+=或-=字符序列,则通过从属性的当前值中添加或减去给定数字来计算目标值。”这是您的完整代码吗?在哪里使用方向?同意,需要更多代码。在CSS对象中加上“+=”和“-=”我很确定这样做是行不通的。还有更多的代码,但这是相关的东西。从我在顶部的解释来看,变量本身就是一种解释@mVChr来自“动画属性也可以是相对的。如果提供的值带有前导+=或-=字符序列,则通过从属性的当前值中添加或减去给定数字来计算目标值。”感谢此matrym,这正是我所需要的。左边的值被正确地计算出来了,但是因为我使用了左边和右边的混合,所以它变得很混乱。现在,所有内容都从左侧开始计算,以简化计算。我还喜欢您使用.each函数的示例。这是非常干净,但你的方式设置它不工作。仅调用所选内容中的第一项。如果我将each更改为:$.each([img_left,img_focus,img_right],function()..,那么它可以正常工作。我不太清楚为什么。@Chris您在注释中使用的each处理一个数组,而不是一组jQuery选择的dom对象。如果您之前声明了$imgs=$(“#img_left,#img#u focus,#img#right”),那么我想你应该可以每人做$imgs(函数…感谢此matrym这是我所需要的。左值被正确计算,但由于我使用的是左和右的混合,它变得非常混乱。现在所有内容都从左开始计算,以使其更容易。我也喜欢您使用.each函数的示例。这更干净,但您设置它的方式没有不起作用。只有选择中的第一项被调用。如果我将each更改为:$.each([img\u left,img\u focus,img\u right],function()..,那么它可以正常工作。我不确定为什么。@Chris您在注释中使用的each处理一个数组,而不是一组jQuery选择的dom对象。如果您之前声明了$imgs=$(“#img_left,#img_focus,#img_right”),那么我认为您应该能够完成$imgs。每个(函数。。。