我正在使用jQuery Transit動畫變化的元素。jQuery轉換動畫不能正確執行for循環
我使用for循環動畫多個框。
的JavaScript:
<script>
window.onload = function(){
$('div.test').mouseover(function(){
for (var i = 0; i < 2; i++){
console.log(i+' Starting Loop');
//Rotate box animation
$('div.test' && '.'+i).transition({
perspective: '100px',
rotateY: '-180deg',
x: '-90px'
}, 'slow',function(){
//On completion code.
$('div.test' && '.'+i).append(' With Changed Text');
console.log(i + 'Text has been changed');
//Rotate back
$('div.test' && '.'+i).transition({
perspective: '100px',
rotateY: '0deg',
x: '0px'
}, 'slow');
});
console.log(i + 'finished the loop');
alert(i + ' finished loop');
}
});
}
</script>
和HTML:
<body>
<div class='test 0'>
Box1
</div>
<div class='test 1'>
Box2
</div>
</body>
它應該通過使框移動到工作,進行適當的修改,然後再移回原來的位置。
但是,在繼續執行for循環的下一次迭代之前,不是等待第一個動畫完成,它似乎在等待for循環完成,然後纔會執行$.transition()
函數。
所以當調用$.transition()
函數時,i = 2
。因此,$.append()
函數將附加到類「.2」的元素,該元素不存在。
有什麼方法可以確保動畫在循環內正確執行嗎?
注意這是我的真實代碼的簡化版本。我通常會爲每個盒子附加不同的值。我也遍歷可能超過2的列表。
編輯我找到了一個通過遞歸迭代遍歷數組的解決方案。 Here it is.
循環是非阻塞的。遞歸的時間! – 2012-07-27 20:30:13