2012-03-14 66 views
3

我想做一个基本的淡入淡出幻灯片。我只让它自动运行一次。 如何让它有一个循环?jQuery - 如何循环功能?

HTML

<img src="image1.jpg" class="img1"> 
<img src="image2.jpg" class="img2"> 

JS

$(document).ready(function() { 
function playslider(){ 
     $('.img1').fadeIn(800).delay(800).fadeOut(800); 
     $('.img2').delay(1600).fadeIn(800).delay(800).fadeOut(800); 
} 
playslider(); 
}); 
+0

你的意思是你想自动播放它只有一次? – Shaheer 2012-03-14 04:28:27

+0

不,我做到 - > fadeOut(800,playslider)。如何让最后的图像淡出并与下一个第一张图像交叉淡入淡出? – KnightMax 2012-03-14 04:33:03

回答

7

尝试将其更改为这样:

$(document).ready(function() { 
function playslider(){ 
     $('.img1').fadeIn(800).delay(800).fadeOut(800); 
     $('.img2').delay(1600).fadeIn(800).delay(800).fadeOut(800, playslider); 
                   //^callback function 
} 
playslider(); 
}); 

这就是所谓的 “回调函数”。这个想法是,当你最后的淡出完成时它会被调用。你可以阅读更多here

+0

Thanks.How我让最后一个图像淡出,并与下一个第一个图像淡入淡出。 – KnightMax 2012-03-14 04:30:09

+0

交叉衰落超出了您当前的问题范围,因此我很难在评论中回答。我会建议为该特定问题创建一个新问题。我会说在过去,我通常使用jQuery插件来处理交叉淡化。 – 2012-03-14 04:46:07

+0

@AbeMiessler尼斯one.learned一个新的诡计现在..谢谢 – Gopesh 2012-03-14 05:19:24

2

您可以使用好老的Javascript:

$(document).ready(function() { 
function playslider(){ 
     // code to execute 
    x = setTimeout("playslider()", 5000); //will loop every 5 seconds. 
} 
playslider(); //start it up the first time 

}); 
+0

为什么x = setTimeout(“playslider()”,5000);不起作用? – KnightMax 2012-03-14 04:37:46

2

答案是:

$(document).ready(function() { 
function playslider(){ 
     // code to execute 
    x = setTimeout(function(){playslider()}, 5000); 
} 
playslider(); 

}); 
0

它的作品不错,但如果u以这种方式改变它,它工作得更好

$('.img1').fadeIn(800).delay(800).fadeOut(800); 
    $('.img2').delay(2400).fadeIn(800).delay(800).fadeOut(800, playslider); 

只是增加达赖时间至2400(2400 = 800 + 800 + 800)