I am trying to learn jquery queue. Everything works when I add each function to the queue manually:
$("#victory-gradient--r")
.queue(function(next) {
$(this).css({transform: "translate(-"+gradientSlowLoc+"px)", "-webkit-transform": "translate(-"+gradientSlowLoc+"px)", "transition-duration": gradientSpeed0 + "ms", "-webkit-transition-duration": gradientSpeed0 + "ms"}).one(TRANSITION_END, next);
})
.queue(function(next) {
$(this).css({transform: "translate(-"+gradientFastLoc+"px)", "-webkit-transform": "translate(-"+gradientFastLoc+"px)", "transition-duration": gradientSpeed1 + "ms", "-webkit-transition-duration": gradientSpeed1 + "ms"}).one(TRANSITION_END, next);
})
.queue(function(next) {
$(this).css({transform: "translate(-"+gradientFinalLoc+"px)", "-webkit-transform": "translate(-"+gradientFinalLoc+"px)", "transition-duration": gradientSpeed2 + "ms", "-webkit-transition-duration": gradientSpeed2 + "ms"}).one(TRANSITION_END, next);
});
but when I try to add them with a for loop, only the first one ever plays:
var gradientLocs = [gradientSlowLoc, gradientFastLoc, gradientFinalLoc];
var gradientSpeeds = [gradientSpeed0, gradientSpeed1, gradientSpeed2];
for (var i=0; i < 3; i++) {
$("#victory-gradient--r").queue(function(next) {
$(this).css({transform: "translate(-"+gradientLocs[i]+"px)", "-webkit-transform": "translate(-"+gradientLocs[i]+"px)", "transition-duration": gradientSpeeds[i] + "ms", "-webkit-transition-duration": gradientSpeeds[i] + "ms"}).one(TRANSITION_END, next);
});
}
I’ve seen people build jquery queues with loops before, including in a couple answers found here:
What am I doing wrong?