我正在使用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