使用轮播循环“活动”类

时间:2013-07-16 09:02:06

标签: jquery css carousel

我有一个带有九张幻灯片的旋转木马,其中第一张有一个“活跃”类。

<ul class='nav'>
    <li class='left'>left</li>
    <li class='right'>right</li>
</ul>

<ul class='carousel'>
    <li class='active'></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
</ul>

单击“右侧”按钮时,活动类需要移动到下一个li(它还需要应用到最后一个之后的第一个li)。

显然,当单击左键时,活动类需要向相反方向移动。

我尝试了下面的内容,但是我不知道如何让活动类在最后一个之后回到第一个li。

$('.nav .right').click(function(){
    $('.carousel .active').removeClass('active').next().addClass('active');
});

任何帮助将不胜感激。感谢。

3 个答案:

答案 0 :(得分:1)

它肯定可以改进,但以下代码适用于您需要做的事情:

$('.nav .right').click(function(){
    var next = $('.carousel .active').removeClass('active').next();
    if (next.length == 0) { next = $('.carousel li').first(); }
    next.addClass('active');
});

答案 1 :(得分:0)

$('.nav .right').click(function () {
    $('.carousel .active:not(:last-child)').removeClass('active').next().addClass('active');
});
$('.nav .left').click(function () {
    $('.carousel .active:not(:first-child)').removeClass('active').prev().addClass('active');
});

FIDDLE

答案 2 :(得分:0)

尝试

var $carousel = $('.carousel');
$('.nav .right').click(function(){
    var next = $carousel.children('.active').removeClass('active').next();
    if(!next.length){
        next = $carousel.children().first();
    }
    next.addClass('active');
});

$('.nav .left').click(function(){
    var prev = $carousel.children('.active').removeClass('active').prev();
    if(!prev.length){
        prev = $carousel.children().last();
    }
    prev.addClass('active');
});

演示:Fiddle

另一种变体:Fiddle