javascript - jQuery中的each函數(shù)遍歷與animate函數(shù)一起使用的時(shí)候,執(zhí)行過程是怎樣的?
問題描述
$('#banner ul li').each(function(i){ $(this).animate({width: arrW[index], height: arrH[index],opacity: arrO[index],left: arrL[index],top: arrT[index] },500)}
我不理解的是,當(dāng)每循環(huán)一次的時(shí)候,動(dòng)畫的執(zhí)行要500ms,那是等動(dòng)畫執(zhí)行結(jié)束,也就是500毫秒之后,才進(jìn)行下一次循環(huán)嗎?還是不等動(dòng)畫執(zhí)行完,就執(zhí)行下一次循環(huán)了?
問題解答
回答1:each主要只是遍歷,沒有異步調(diào)用的操作,而animate的動(dòng)畫主要還是用的延遲也就是異步。
http://www.zhangyunling.com/2...
這好比:
for(var i=0;i<100;i++){ setTimeout(function(){console.log(’一次延遲回調(diào)’); },1000);}
于是,動(dòng)畫的回調(diào)應(yīng)該是進(jìn)入任務(wù)隊(duì)列的,所以循環(huán)是先執(zhí)行的。
回答2:應(yīng)該是先循環(huán)綁定事件,然后同時(shí)進(jìn)行。也就是說,在動(dòng)畫執(zhí)行之前,先做了循環(huán),給每一個(gè)元素都綁定了這個(gè)動(dòng)畫。循環(huán)結(jié)束之后,所有元素同時(shí)進(jìn)行這個(gè)動(dòng)畫。
