2011-02-24 102 views
2

我有這個
。每個不等待函數結束

$('li').each(function() { ... 

這個功能裏面有一些動畫,
但是這些動畫不會被
這個函數被調用的時間完成再次。
有沒有像一個切換,使每個等待
功能結束?

回答

1

你可以把動畫的功能裏面,以適應你的動畫調用一個動畫,然後讓動畫回調再次調用該函數。

function doStuff(){ 
    $('#element').animate({'property':1000},4000, doStuff); 
} 
+0

爲我工作,儘管一旦我做出更復雜的事情可能會出現問題。 – Asaf 2011-02-25 15:21:57

0

沒有。動畫是異步的。 jQuery將它作爲一個單獨的進程觸發,然後進入列表中的下一個元素。

你需要它的時候完成

+0

或者在動畫之前使用「停止(true,true)」來停止該元素上的前一個元素,並有效地立即完成正在進行的動畫。例如'$('#abc')。stop(true,true).fadeIn();' – Neil 2011-02-24 22:25:21

1

您可以停止動畫http://api.jquery.com/stop/或者可以使用一個隊列動畫http://api.jquery.com/queue/

沒有任何選項,每個等待動畫結束。你可以做的是使用「控制」變種。在開始動畫之前將var設置爲true,然後爲動畫設置回調函數並將var設置爲false。當您輸入動畫代碼時,請檢查var以查看是否還有待處理的動畫。如果有,您可以排列動畫。

0

動畫是異步的,但沒有理由說明爲什麼在每個函數中你的第一個動作不可能是某種門控機制,它可以有效地防止在動畫結束時將其解除激活。

+0

非常有趣,我沒有意識到這一事實在JavaScript中。 – Asaf 2011-02-25 15:22:54

0

Jquery動畫是「異步」的。當他們被解僱時,他們不會停止Javascript引擎。 我能想到的等待動畫結束的唯一方法是實現可以添加到jquery中的動畫調用中的回調。

這將迫使你打開你的.each()調用。