两个动画之间的jQuery延迟

时间:2010-10-05 11:05:26

标签: jquery

代码:

   $("#telecomGrayscale", this).stop().animate({ top: '467px' }, 
    { duration: 400 }).delay(800).queue(function() {
                $("#boxcaptionTelecom", this).stop().animate({ top: '272px' }, { duration: 900 });
                });

以上代码无法正常运行。队列()内的第二个动画不是 工作

我只需要延迟第二个动画。还试过setTimeout和setInterval无法让它们工作。

2 个答案:

答案 0 :(得分:2)

我认为它应该在链中:

$("#telecomGrayscale", this).stop().animate({ top: '467px' }, 
{ duration: 400 }).delay(800).animate({ top: '272px' }, { duration: 900 });

编辑: 原谅我的错误。如果你想在两个不同的元素上创建它,那么你应该创建queue()'fx'的第一个参数,然后作为第二个参数你的函数。查看http://api.jquery.com/queue/

处的功能文档

答案 1 :(得分:2)

在你的第二个动画中,this不是你想象的那样,所以带有this作为上下文的选择器很可能是空的。

尝试这是否有效:

var self = this;
$("#telecomGrayscale", self)
    .stop()
    .animate(
        { top: '467px' },
        { duration: 400 }
    )
    .delay(800)
    .queue(
        function() {
            $("#boxcaptionTelecom", self)
                .stop()
                .animate(
                    { top: '272px' },
                    { duration: 900 }
                );
            return $(this).dequeue();
        }
    );