将JQuery动画修改为循环中的函数
Modify JQuery Animate To Function In Loop?
每次循环中满足特定条件时,我都试图使用Jquery将元素的背景颜色从红色淡出。问题是,下面的代码可以自己工作,但当放在循环中时,它永远不会变红;我在想多个实例同时处于动画火力下,它会崩溃。除了在继续循环之前建立一个系统来检测下面的函数何时完成之外,有没有一种方法可以确保每次调用它时都不会崩溃?
$('#outputdiv').animate({backgroundColor: 'red'}, 2000, function() {
$('#outputdiv').animate({backgroundColor: 'white'}, 2000);
});
您真的在使用循环(for
,while
)吗?如果是这样的话,在#output
上立即执行多次将不会有任何兴趣。。。
但是,如果希望该函数重复自身,则可以使用递归。只需将代码放入函数中,然后作为回调,再次调用它:
function myFunction(){
$('#outputdiv').animate({backgroundColor: 'red'}, 2000, function() {
$('#outputdiv').animate({backgroundColor: 'white'}, 2000, myFunction);
});
}
myFunction();
JS Fiddle演示
编辑
要允许动画在再次执行之前完成,您可以这样做:
var isAnimating = false;
function myFunction(){
if(isAnimating) return false;
isAnimating = true;
$('#outputdiv').animate({backgroundColor: 'red'}, 2000, function() {
$('#outputdiv').animate({backgroundColor: 'white'}, 2000, function(){
isAnimating = false;
});
});
}
someSortOfLoop(myFunction);
JS Fiddle演示
这是您可以做的,以放置一个颜色已变为红色的检查器:
$('#outputdiv').animate({backgroundColor: 'red'}, 2000, function() {
if ($('#outputdiv').is(':animated'))
$('#outputdiv').animate({backgroundColor: 'white'}, 2000);
});
相关文章:
- Chrome/jQuery未捕获范围错误:超过了最大调用堆栈大小(函数循环)
- 如何在返回值(Js)时不中断函数/循环
- 函数在自己的循环中使用 i,以及一个子函数循环 - var 的行为类似于 let
- 我可以在 jquery 中对函数循环使用相同的返回值吗?
- 如何使用 each() 函数循环访问 JSON 文件
- jQuery函数循环两次
- setInterval 函数循环太快
- 简化我的函数(循环、数组)
- 我的 IF 条件如何影响全局变量使函数循环
- 使用ReactJS和concatJSX语法进行渲染时的map函数循环
- 如何通过OnClick函数循环遍历标记元素并在显示器上获得相应的内容
- 函数循环问题
- 将计数器添加到javascript函数循环中
- 通过future函数循环和设置全局变量
- jQuery创建一个函数循环,每个函数都有一个动画队列
- 从另一个函数终止一个活动的javascript函数/循环
- jQuery函数循环:为什么夏奇拉在陌生人吻她时重复吻
- 在一个简单的函数循环中设置style.display时出现了奇怪的行为
- 通过多个函数循环/setinterval
- 试图防止Jquery函数循环