【发布时间】:2012-11-15 15:16:23
【问题描述】:
我正在浏览一个动画列表,如下所示:
function katz_logo() {
$('#logo')
.delay(500)
.animate({opacity: 1}, 1000)
.queue(katz_subsites);
}
function katz_subsites() {
var subsites = $('#subsites li'),
subsitesLength = subsites.length;
subsites.each(function(i) {
$(this)
.delay(i * 300)
.animate({top:0, opacity: 1 }, 800);
if (i === subsitesLength - 1) {
alert('hi');
}
});
}
function katz_video() {
if (!Modernizr.touch) {
$('#home_video').delay(500).fadeIn(1000);
}
}
katz_logo();
每个动画都被定义为一个函数,然后最终用katz_logo() 调用来启动魔法。在katz_subsites() 函数中,我正在遍历每个可用的li,然后我要做的是在到达最后一个元素后将katz_video() 函数排队,但即使我的警报实验也无法正常工作预计。
所以 - 我遇到问题的部分是如何获取最后一个值(我发誓我一直在关注这里的其他答案),然后在达到之后如何排队。
任何帮助将不胜感激。谢谢!
更新
代码进度 - 仍然停留在定位 each() 语句中的最后一个元素,然后排队下一个动画:
function katz_logo() {
$('#logo')
.delay(500)
.animate({opacity: 1}, 1000, katz_subsites);
}
function katz_subsites() {
var subsites = $('#subsites li'),
subsitesLength = subsites.length;
subsites.each(function(i) {
$(this)
.delay(i * 300)
.animate({top:0, opacity: 1 }, 800);
if (i === subsitesLength - 1) {
i.queue(katz_video);
}
});
}
function katz_video() {
if (!Modernizr.touch) {
$('#home_video').delay(500).fadeIn(1000);
}
}
katz_logo();
工作代码:
function katz_logo() {
$('#logo')
.delay(500)
.animate({opacity: 1}, 1000, katz_subsites);
}
function katz_subsites() {
var subsites = $('#subsites li'),
subsitesLength = subsites.length;
subsites.each(function(i) {
$(this)
.delay(i * 300)
.animate({top:0, opacity: 1 }, 800, (i===subsitesLength-1 ? katz_video : (function(){})) );
});
}
function katz_video() {
if (!Modernizr.touch) {
$('#home_video').delay(500).fadeIn(1000);
}
}
katz_logo();
【问题讨论】:
标签: jquery jquery-animate queue