JQuery随着循环和延迟而淡出

我有2个Divs堆叠在一起。

我需要一个非常简单的function:

a)等待3秒然后b)FadeOut顶部Div显示第二个Div c)再次等待3秒然后d)再次淡入顶部Div e)再次循环

有人可以提供任何建议吗?

非常感谢

如果两个div的id为“id1”和“id2”,而id2是上一个,则代码如下:

 function fadeIn() { $("id2").animate({opacity:0},500); setTimeout(fadeOut,3500); } function fadeOut() { $("id2").animate({opacity:1},500); setTimeout(fadeIn,3500); } function startAnim() { setTimeout(fadeIn,3000); } 

startAnim()启动动画循环,你应该调用@ start。 然后fadeIn&Out保持动画id2并为彼此设置超时。 延迟为3500,因为您需要3秒的延迟(即3000毫秒),并且需要500秒才能完成上一个动画。 这可以使用animate上的回调来完成,但这更麻烦。

这就是你要找的东西(我想)。 它使用一个无序列表,但你可以将它切换为div,或者只是将你的div放在列表项中,就像我在下面所做的那样。

这是jQuery ……

 $(document).ready(function() { var j = 0; var delay = 2000; //millisecond delay between cycles function cycleThru(){ var jmax = $("ul#cyclelist li").length -1; $("ul#cyclelist li:eq(" + j + ")") .animate({"opacity" : "1"} ,400) .animate({"opacity" : "1"}, delay) .animate({"opacity" : "0"}, 400, function(){ (j == jmax) ? j=0 : j++; cycleThru(); }); }; cycleThru(); }); 

……还有一些起始的css ……

 ul#cyclelist {width:200px;border:solid;position:relative;overflow:hidden;height:200px} ul#cyclelist li {font-size:1.4em;padding:20px;opacity:0;position:absolute} 

你已经有了HTML,但是如果你需要一个例子……

 
  • First Div
  • Second Div
  • Third Div

我很乐意为此而感到荣幸,但它直接来自CSS-Tricks http://css-tricks.com/snippets/jquery/cycle-through-a-list/

没有人会看到这个,但以防万一……

  

这是没有循环它虽然….

那就是

  

此尝试使用来自jquery.com的小菜谱function等待。

函数doFading假定顶部div的id为“a4​​”。

 function doFading() { $("#a4").wait(3000) .fadeOut("slow") .wait(3000) .fadeIn("slow",doFading); } $.fn.wait = function(time, type) { time = time || 1000; type = type || "fx"; return this.queue(type, function() { var self = this; setTimeout(function() { $(self).dequeue(); }, time); }); }; 

如果你也想拥有它xfade。 使用floyed的脚本,但进行我使用过的更改。 唯一的问题是你想要显示的第一个图像应该是li元素中的第二个

 $(document).ready(function() { var j = 0; var delay = 5000; //millisecond delay between cycles function cycleThru(){ var jmax = $("ul#cyclelist li").length -1; $("ul#cyclelist li:eq(" + j + ")") .animate({"opacity" : "1"} ,1000) .animate({"opacity" : "1"}, delay); $("ul#cyclelist li:eq(" + j + ")").next().animate({"opacity" : "1"} ,1000); $("ul#cyclelist li:eq(" + j + ")") .animate({"opacity" : "0"}, 1000, function(){ (j == jmax) ? j=0 : j--; cycleThru(); }); }; cycleThru(); }); 

我知道这已经过时了,但我想我会分享我为实现这一目标所做的一切

 $(document).ready(function() { var delay = 500; $("#mydiv").bind('fadein', function() { $(this).fadeOut(1000, function() { $(this).delay(delay).trigger('fadeout'); }); }); $("#mydiv").bind('fadeout', function() { $(this).fadeIn(1000, function() { $(this).delay(delay).trigger('fadein'); }); }); $("#mydiv").fadeIn(1000, function() { $(this).trigger("fadein"); }); }); 

然后在你希望它停止时调用它

 $("#mydiv").stop().hide();