jQuery:如何优化/清理这个基本动画代码?

jQuery:如何优化/清理这个基本动画代码?,jquery,jquery-animate,Jquery,Jquery Animate,我正在尝试制作手部动画来绘制形状,效果很好,但是代码看起来很长而且不专业。有什么办法可以让这部动画简短而专业 下面是一个例子,我的实际动画太长,但有相同的想法: $(hand).animate({ top : 30, left : 255 }, function(){ $(hand).animate({ top : 130, left : 250 }, function(){ $(hand).animate({ top : 140, left : 265 }, function(){

我正在尝试制作手部动画来绘制形状,效果很好,但是代码看起来很长而且不专业。有什么办法可以让这部动画简短而专业

下面是一个例子,我的实际动画太长,但有相同的想法:

$(hand).animate({ top : 30, left : 255 }, function(){
  $(hand).animate({ top : 130, left : 250 }, function(){
    $(hand).animate({ top : 140, left : 265 }, function(){
        $(an_element).fadeOut();
    });
  });
});

有什么建议吗

您可以这样写:

$(hand)
    .animate({ top : 30, left : 255 })
    .animate({ top : 130, left : 250 })
    .animate({ top : 140, left : 265 }, function(){
        $(an_element).fadeOut();
    });


更新: 你也可以这样写:

handCoorArr = [ [30,255], [130,250], [140,265] ];

for (i=0;i<handCoorArr.length;i++)
{
    $(hand).animate({top:handCoorArr[i][0],left:handCoorArr[i][1]});
}
/* 400 is the default animation speed */
$(an_element).delay(400*handCoorArr.length).fadeOut();
handCoorArr=[[30255]、[130250]、[140265];

对于(i=0;ithank's,这是一个减少行数的好方法,但仍然是非专业的方法:)我的代码太长,需要一个动态函数,可能会将左上角的值添加到数组中并动态检索它们,我现在不这样做。在您的演示中,您有
hand=$(“#hand”)然后
$(手动)。动画…
看起来像是在jQuery中包装元素两次。是不是应该是
hand.animate…
?@zgood哦,你说得对!但这正是OP在其原始代码中使用的内容,所以这并不重要,因为他不会使用
hand=$(“#hand”)
。我只需要虚拟元素。太棒了!最后一件事,我为每个动画添加了一个Int(例如50)作为“速度”,而不是默认值[30255,50],我使用handCoorArr[I][2]来调用它,它工作得很好:),但是在这种情况下淡入淡出延迟如何?你明白了吗?
handCoorArr = [ [30,255,50], [130,250,800], [140,265,500] ];

for (i=0;i<handCoorArr.length;i++)
{
    $(hand).animate({top:handCoorArr[i][0],left:handCoorArr[i][1]},handCoorArr[i][2]);
}
handDelay=0;
$.each($.map(handCoorArr, function(v,i){return v[2]}),function(){handDelay+=this;});
$(an_element).delay(handDelay).fadeOut();