需要使用jQuery使DOM元素逐漸淡出,顯然我需要循環,因爲我有20個元素,我不知道如何在jQuery中創建循環我確實如下。jQuery等待第一個動畫在開始下一個動畫之前完成
但是,回調不能正常工作,所有元素同時淡入,它應該等待第一個動畫完成,然後再次運行animate_element()。
如果有更好的方法來做到這一點,我想知道它,但我也想知道爲什麼下面的代碼不起作用?
$('div').css("display", "none");
$('div').addClass("needs_animation");
function animate_element(){
if ($("div[class='needs_animation']:first").length) {
$("div[class='needs_animation']:first").removeClass("needs_animation");
$("div[class='needs_animation']:first").fadeIn(2000, animate_element());
}
}
animate_element();
例子:http://jsfiddle.net/m7PWT/1/
編輯:固定感謝約翰■迴應,但我用我自己的代碼,即使它的性能不是最好的,因爲在這一點上它更清楚我。
$('div').css("opacity", "0");
$('div').addClass("needs_animation");
function animate_element(){
if ($("div[class='needs_animation']").length) {
$("div[class='needs_animation']:first").animate({opacity:1}, 100, function() {
$("div[class='needs_animation']:first").removeClass("needs_animation");
animate_element()
});
}
}
animate_element();
工作撥弄
謝謝,你能解釋爲什麼我的代碼不工作? – user3185872
@ user3185872 - 這是一個很好的問題。起初,我沒有仔細查看你的代碼,但我一直想念它。我馬上看到一個問題。你重複'$(「div [class ='needs_animation']:first」)',而不是將它存儲在一個變量中。這不僅僅是一個性能問題;刪除課程後它會有不同的結果。但只是做出這樣的改變仍然無法奏效。 –
感謝,我的第一天與jQuery,但我來自PHP背景。 – user3185872