i am trying to create a loop of text animations over a slider... i tried loop but it didnt work.. Can you please tell me how do i loop this script forever..thanks
Create a recursive and self-executing function and use it as the final callback:
p.s. Took the liberty to clean up your code.
$(function () {
(function repeat() {
var header = $("#header"),
headerOne = 'I',
headerTwo = 'Am',
headerThree = 'So',
headerFour = 'Cool';
header.text(headerOne)
.fadeIn(1000)
.delay(1000)
.fadeOut(1000, function () {
header.text(headerTwo)
.fadeIn(1000)
.delay(1000)
.fadeOut(1000, function () {
header.text(headerThree)
.fadeIn(1000)
.delay(1000).fadeOut(1000, function () {
header.text(headerFour)
.fadeIn(1000)
.delay(1000)
.fadeOut(1000, repeat);
});
});
});
})();
});
If you clean your code a bit. You can realize that setInterval
is not needed. Simply make use of the last callback to repeat the animation.
$(function () {
var $header = $("#header");
var header = ['I', 'Am', 'So', 'Cool'];
var position = -1;
!function loop() {
position = (position + 1) % header.length;
$header
.html(header[position])
.fadeIn(1000)
.delay(1000)
.fadeOut(1000, loop);
}();
});
See it here.
You can use recurence, the last fadeOut
will execute repeat function when finish.
function repeat() {
$("#header").hide();
var headerOne='I';
var headerTwo='Am';
var headerThree='So';
var headerFour='Cool';
$("#header").html(headerOne);
$("#header").fadeIn(1000);
$('#header').delay(1000).fadeOut(1000,function() {
$(this).html(headerTwo).fadeIn(1000);
$('#header').delay(1000).fadeOut(1000,function() {
$(this).html(headerThree).fadeIn(1000);
$('#header').delay(1000).fadeOut(1000,function() {
$(this).html(headerFour).fadeIn(1000).delay(1000).
fadeOut(1000, repeat);
});
});
});
}
$(document).ready(function() {
repeat();
});