当幻灯片结束时从第一张图像重新开始

时间:2013-08-07 17:35:15

标签: javascript jquery

当我的幻灯片图像到达结尾时,它会停止。我试图让它重新开始,但不能让它发生。我希望有人可以帮助我实现这一目标,并以我的代码为基础。我遵循了关于如何使用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语法 提前致谢

2 个答案:

答案 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。