I have this code:
jQuery(\'#flash\').animate({opacity: 0.35}, 200)
.animate({opacity: 0}, 200)
.animate({opacity: 0.35}, 200)
You can chain the animation using a loop if that's what you're looking for.
var $flash = jQuery('#flash'), i;
for (i = 0; i < 10; i++) {
$flash = $flash.animate({opacity: 0.35}, 200)
.animate({opacity: 0}, 200);
}
No, you can't chain animations without editing the animation queue. If you want to chain a variable, but limited number of times you can do easily with a loop:
var flash = $("#flash");
for (var i=0; i<n; i++)
flash.animate({opacity: 0.35}, 200).animate({opacity: 0}, 200);
If you want an endless loop, or one that stops when a condition is to be fulfilled in the future, you want to hook a callback on the animation queue, restarting the function:
var flash = $("#flash");
function anim() {
// if (condition)
flash.animate({opacity: 0.35}, 200).animate({opacity: 0}, 200, anim);
// call "recursively": ^^^^
}
anim();
If I understand correctly you only need a FOR loop:
function animate_n_times(n) {
var flash = $('#flash');
for(var i=0;i<n;i++) {
flash.animate({opacity: 0.35}, 200)
.animate({opacity: 0}, 200);
}
}
then called like:
animate_n_times(3);
There is a shorter alternative, using the extension jquery-timing:
Animate a given number of times:
$('#flash').repeat().animate({opacity:0.35}, 200)
.animate({opacity:0}, 200).until(10);
As endless loop:
$('#flash').repeat().animate({opacity:0.35},200).animate({opacity:0},200,$);
For details see the API of .repeat(), .until(count), and .animate(…,$).