次のようなアニメーションのリストを実行しています。
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();