jquery delay and cycle

Hello Experts,

On a page i have a slideshow. I want to add text to serve as a caption of the image.
In total there are only two photo so this should not be a long script.....

What i did using my very basic knowledge in jquery is simply use show/hide with the delay.

Like so

        $('#caption1').fadeIn(5000);
	$('#caption1').delay(12000).fadeOut(500);

        $('#caption2').fadeIn(5000);
	$('#caption2').delay(12000).fadeOut(500);	

Open in new window


You see in need to follow the time of the photo as they appear and cycle.
- when the first photo appear show caption1
- when the second photo appears hide caption1 and show caption2
- cycle the same timing... first photo appears again.....

Please if someone can help?
RefaelAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Gurvinder Pal SinghCommented:
something like

var total = $("[id^='caption']").size();
function showcaption(id){
$("#"+id).fadeIn(5000, function(){
   setTimeout("getNextId(" + id + ")", 12000);
});
}

function getNextId(id)
{
  $("#"+id).fadeOut(2000, function(){
   if ( $("#"+id).index() == size()-1 )
   {
        id = $( "[id^='caption']").first().attr("id");
   }
   else
   {
        id = $("#"+id).next( "[id^='caption']").attr("id");
   }
   setTimeout("showcaption(" + id + ")", 12000);
});
}
0
Lalit ChandraCommented:
you can do something like following


<html>
<head>
<script script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script>
$(function() {
     $("#divImage-Slide div:first").hide();
     setInterval("SwapImageWithCaption()", 1000);
});
function SwapImageWithCaption()
{
    $("#divImage-Slide>div").toggle()
}
</script>      
</head>
<body>
<div id="divImage-Slide">
   <div id="divImage1">
       <img src="Desert.jpg" height="308px" width="308px" >     
       <div id="divCaption1">Caption 1 - Desert</div>
   </div>
   <div id="divImage2">
        <img src="Chrysanthemum.jpg" height="308px" width="308px">      
        <div id="divCaption1">Caption 2- Chrysanthemum</div>
   </div>
</div>

</body>
</html>

hope this will solve your problem.
0
RefaelAuthor Commented:
Hi again,

gurvinder372, I tried your solution. nothing happens.

Lalit-Chandra, I am only looking for the solution on the caption not the slideshow.

I will set the time corresponding the two photo.

All i am after is the option to set a time for the "caption" 1 to appear then fade... the the time for "caption2" then hide... then to cycle the same function (show/hide) in the same timing.

thanks again guys!
0
The Ultimate Tool Kit for Technolgy Solution Provi

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy for valuable how-to assets including sample agreements, checklists, flowcharts, and more!

Lalit ChandraCommented:
Ok. you want the show/hide effect only on the caption not with the image.So, in that scene you can simple remove the image from the sample i have presented. It will start the animation with caption only.
0
RefaelAuthor Commented:
Hi Lalit-Chandra,

Thank you! for some reason the 2nd caption is displaying first. I can set the time, wonderful.
Can i add fadeIn, fadeOut or slideLeft SlideRight?
0
RefaelAuthor Commented:
Hi Lalit-Chandra,

as in my previous reply, again, thank you!

here is the code below, as i set it.

the second caption gets to show first, do you know why?

Can i add fadeIn, fadeOut or slideLeft SlideRight?

$(function() {
     $("#captions div:first").hide();
     setInterval("SwapImageWithCaption()", 5000);
});
function SwapImageWithCaption()
{
    $("#captions>div").toggle()
}

Open in new window



<div id="captions">
   <div id="caption-1">Caption 1 - Desert</div>
   <div id="caption-2">Caption 2- Chrysanthemum</div>
</div>

Open in new window

0
Gurvinder Pal SinghCommented:
check this simple example code too

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
	<script src="jquery-1.4.2.min.js"></script>
	<script>
		$(document).ready(function(){
			$("#captions div").hide();

			var id = $("#captions div").first().attr("id");

			showcaption(id);
		});

		function showcaption(id){
			$("#"+id).fadeIn(1000, function(){
			   setTimeout("getNextId('" + id + "')", 120);
			});
		}

		function getNextId(id)
		{
			$("#"+id).fadeOut(2000, function(){

				id = $("#"+id).next( "[id^='caption']").attr("id");
				if ( id == undefined || id == null )
				{
					id = $("#captions div").first().attr("id");
				}
				setTimeout("showcaption('" + id + "')", 1000);
			});
		}
	</script>
</HEAD>

<BODY>
	<div id="captions">
	   <div id="caption-1">Caption 1 - Desert</div>
	   <div id="caption-2">Caption 2- Chrysanthemum</div>
	   <div id="caption-3">Caption 3 - Desert 2</div>
	   <div id="caption-4">Caption 4- Chrysanthemum 2</div>
	</div>
</BODY>
</HTML>

Open in new window

0
Lalit ChandraCommented:
hello

the second caption is showing first as because i have make the first caption hidden in my code at the first time.
To make 1 caption visible , do some script change

        $("#captions div:first").hide();
To

        $("#divImage-Slide>div:last").hide();

The above will make frist caption visible first.

As far as Fade In/Out effect is concerned,you have to do some more changing's to achieve that.you take a review of the below code...


<html>
<head>
<script script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script>
$(function() {
$("#divImage-Slide>div:last").hide();
setInterval("SwapImageWithCaption()", 1000);
     
});
function SwapImageWithCaption()
{
$("#divImage-Slide>div").fadeToggle()
}

</script>      

</head>

<body>

<div id="divImage-Slide" style=" width: 100px;height: 100px;position: relative;">
   <div id="divImage1" style=" width: 100%;height: 100%;position: absolute;top: 0;left: 0;">
       <img src="Desert.jpg" height="308px" width="308px" >     
       <div id="divCaption1">Caption 1 - Desert</div>
   </div>
   <div id="divImage2" style=" width: 100%;height: 100%;position: absolute;top: 0;left: 0;">
        <img src="Chrysanthemum.jpg" height="308px" width="308px">      
        <div id="divCaption1">Caption 2- Chrysanthemum</div>
   </div>
</div>

</body>
</html>
         


Hope this will do your required needs.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
RefaelAuthor Commented:
Thank you so much! I have learned!
0
Gurvinder Pal SinghCommented:
did you tried my solution?
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
JavaScript

From novice to tech pro — start learning today.