在jQuery中.animate之后,函数()调用没有执行的问题

时间:2010-04-23 17:18:29

标签: jquery jquery-animate

我无法弄清楚为什么function().animate之后无法执行。示例jQuery代码如下:

$('#spotlight_img_' + thisSpotId).css('z-index', zIndex).animate({
 bottom: 0 
}, { 
  duration: 500,
  queue: true 
}, function() { 
  alert('animation complete'); 
});
$('#spotlight_img_' + lastSpotId).animate({ 
  bottom: "-400px" 
}, {
 duration: 0,
 queue: true 
});

这是第1行中的函数,它在技术上应该包含第2行中的内容。

我需要它如何工作:

1 - 动画$('#spotlight_img_' + thisSpotId)向上

2 - 以$('#spotlight_img_' + lastSpotId)为动画。

现在因为第二个动画是0秒长,它会在第一个动画完成之前发生。

您可以在此处看到它:http://design.vitalmtb.com/index2.html

我真的很感谢你的帮助!

1 个答案:

答案 0 :(得分:10)

这将取代第1行(为便于阅读而分成多行):

$('#spotlight_img_' + thisSpotId).css('z-index', zIndex)
    .animate({ bottom: 0 }, { 
        duration: 500, 
        queue: true, 
        complete: function() { alert('animation complete'); } 
    });

animate有两个版本:

.animate( properties, [ duration ], [ easing ], [ callback ] )
.animate( properties, options )

您正在使用传递选项地图的第二个版本,因此您需要使用complete选项指定回调。

由于queue: true是默认值,您还可以使用第一个版本:

$('#spotlight_img_' + thisSpotId).css('z-index', zIndex)
    .animate({ bottom: 0 }, 500, function() { alert('animation complete'); });