for 循环中的 jquery Animate 函数
jquery animate function in a for loop
过去几天我一直在为此苦苦挣扎。我已经阅读了有关闭包和循环问题的所有内容。但是在循环中使用 jquery animate 函数对我不起作用。但也许我不明白闭包背后的实际意义,这就是为什么我要问:)所以,下面是这个例子:
$(document).ready(function() {
var obj1 = $(".wraper");
for (var i = 0; i < 3; i++) {
alert("Calling animate");
obj1.animate({"opacity": 0.4}, 500, function() {
alert("Animate finished");
});
}
});
我希望按如下方式调用序列:
- 调用动画
- 动画完成
- 调用动画
- 动画完成
- 调用动画
- 动画完成
我得到的是:
- 调用动画
- 调用动画
- 动画完成
- 调用动画
- 动画完成
- 动画完成
阅读了有关闭包的信息后,我会说这不是所有答案在这些情况下使用的问题,通常它与在函数声明中使用计数器 i 有关,但这里它与调用回调的顺序有关,我不知道 jquery 库如何调用动画回调, 谁能帮我解决这个问题?
注意:如果像这样使用:
$(document).ready(function() {
var obj1 = $(".wraper");
for (var i = 0; i < 3; i++) (function(n) {
alert("Calling animate");
obj1.animate({"opacity": 0.4}, 500, function() {
alert("Animate finished");
});
})(i);
}
因此,将每次迭代作为自执行功能块(这就是我的理解,如果我错了,请纠正我?),我得到的结果与上面相同!
您可以使用递归匿名函数代替for循环:
var i = 0;
(function recur() {
if (i < 3) {
i++;
alert("Calling animate");
obj1.animate({"opacity": 0.4}, 500, function() {
alert("Animate finished");
recur();
});
}
})();
相关文章:
- jQuery animate()函数没有't设置动画
- JS异常:animate不是一个函数
- 有没有什么方法可以停止Jquery中的animate(也可以停止完整的回调函数)
- jQuery的slideUp,slideDown,animate函数的任何替代品
- 在jQuery中循环嵌套animate函数
- 如何调用Edge Animate's从外部Javascript中播放函数
- 如何使用jQuery中的animate函数从左向右滑动
- JQuery Animate 函数在制作动画之前跳到屏幕顶部
- Jquery animate 函数中的步骤
- for 循环中的 jquery Animate 函数
- Jquery ui animate 函数不起作用
- 使用 jQuery animate 函数扩展内容区域
- 切换 jQuery .animate 函数
- animate函数使用屏幕的高度
- 如何在这里添加animate函数
- 在step中使用animate函数后调用函数
- 在另一个JS函数中调用easySlider animate函数
- 如何在three.js的animate()函数中改变网格的位置
- 如何使用animate函数在窗口加载时启动jQuery动画
- jQuery .animate 函数无法正确响应