当我的幻灯片图像到达结尾时,它会停止。我试图让它重新开始,但不能让它发生。我希望有人可以帮助我实现这一目标,并以我的代码为基础。我遵循了关于如何使用JQuery创建图像滑块的som教程,所以我不想放弃我编写的代码(如果可能的话)。到目前为止我找到的解决方案都写有完全不同的想法。 这是html代码:
<body style="background-color: lightblue">
<div>
<div id="slider" style="margin-left: auto; margin-right: auto; width: 800px; height: 800px; margin-top: 100px;">
<img src="./images/Dogs.jpg" style="position: absolute;" class="active" />
<img src="./images/pic.jpg" style="position: absolute;" />
<img src="./images/Mal.jpg" style="position: absolute;" />
</div>
</div>
这是JS代码:
function startSlide() {
var $current = $('div #slider img.active');
var $next = $current.next();
if($current.length == 0) {
$next = $('#slider div:first-child');
//This is what where the code will go I guess
}
// $next.addClass('active');
$current.removeClass('active').css({
"opacity" : 0.0,
"zIndex" : 2
});
$("#slider img").animate({opacity: 1.0}, 2000, function() {
$next.addClass('active').css({zIndex: 1});
});
}
所以我的问题是如何编写代码,以便幻灯片一旦到达最后一张图像就会重新开始。最好保留JQuery语法 提前致谢
答案 0 :(得分:1)
尝试这个小提琴,看看是否有帮助:http://jsfiddle.net/eNuwv/2/
当$next
的长度为零时,我修改了$current
的作业,如下所示:
$next = $('#slider :first-child');
我更改了最后的animate
块,以使用$next
的引用而不是您拥有的选择器。
$next.animate({opacity: 1.0}, 2000, function() {
$next.addClass('active').css({zIndex: 1});
});
希望有所帮助。
PS。我不确定你打算如何初始化所有东西,所以小提琴开始时所有3个图像都可见 - 点击开始幻灯片链接几次将使你进入一个你应该能够循环的状态。
我没有班级.active
的CSS,但您可能只是将其用作标记。
答案 1 :(得分:1)
这是完整的代码,对我有用,你可能需要稍微玩一下时间:
我使用了大卫的小费。
$(document).ready(function(){
setInterval(function(){startSlide()}, 2100);
});
function startSlide() {
var $current = $('div #slider img.active');
var $next = $current.next();
if($next.length == 0) {
$next = $('#slider :first-child');
//make sure you don't make an empty circle
}
$current.removeClass('active');
$current.css({
"opacity" : "0.0",
"zIndex" : "2"
});
$next.animate({opacity: 1.0}, 2000, function() {
$next.addClass('active').css({zIndex: 1});
});
}
我还为不想在开头显示的图像添加了不透明度:0。