【发布时间】:2016-04-06 11:15:18
【问题描述】:
我需要在 for 循环中对不同对象排序 jQuery 动画。
Javascript:
$(document).ready(function(){
$('#o1').click(function() {
for (var a=0; a<3; a++){
console.log('a = ' + a);
// ... some calculations
animateCard($('#o1'));
animateCard($('#o2'));
// ... some calculations
}
});
});
// In reality this function will have object and target inputs
function animateCard(card){
if (card.offset().left == 400) card.animate({left: 0}); // move home
else card.animate({left: 400});
}
HTML:
<div id="o1" class="card green">Click me</div>
<div id="o2" class="card red"></div>
<div id="p1" class="card gray"></div>
<div id="p2" class="card gray"></div>
这里是 JSFiddle 链接: https://jsfiddle.net/fu3mte6u/1/
- 我明白了:
- 循环开始,
- object1, object2, .. 第 n 个对象一起移动到它们的位置
- 直到他们到达他们的第一个目的地,所有迭代都循环通过(控制台日志显示)
在 JSFiddle 示例中,如果您单击绿色方块 - 动画将开始。并且一动就会停止。如果再次单击绿色矩形,它将执行所需的第二次迭代动画(但所有循环迭代将在这一步骤中再次消失)
- 期望的结果:
- 迭代一 - 将 object1 移动到 position1,然后才将 object2 移动到 pos2,然后 .... 第 n 个到第 n 个位置
- 迭代二 - 再次将对象 object1 移动到其他位置,然后移动 object2,然后 .... nth 等等... (不要一起做动画,一步一步来)
对于 JSFiddle 示例,它将是这样的 - 第一个绿色矩形向右移动,红色矩形向右移动,然后 在下一次迭代中,绿色返回到原来的位置,然后红色返回,在第三次迭代中,红色将紧跟在绿色之后。
随着迭代次数、移动对象及其目的地的变化以及在计算之间插入动画,我无法为每个动画编写回调函数()。 队列,据我了解,它适用于对一个对象的动画进行排序。
那么,也许您可以帮助在循环中对多个对象的动画进行排序?
【问题讨论】:
标签: javascript jquery animation queue sequence