1

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

<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 之后的第一个 li。

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

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

4

3 回答 3

1

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

$('.nav .right').click(function(){
    var next = $('.carousel .active').removeClass('active').next();
    if (next.length == 0) { next = $('.carousel li').first(); }
    next.addClass('active');
});
于 2013-07-16T09:07:32.217 回答
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');
});

小提琴

于 2013-07-16T09:05:36.570 回答
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');
});

演示:小提琴

另一种变体:小提琴

于 2013-07-16T09:08:29.433 回答