jQuery循环prev next

Diz*_*zzi 2 jquery loops next

我发现这段代码正在寻找一个基本的滑块,它足够接近我想要的但是我希望它一旦到达最后一个li就循环,即如果最后一个li和下一个按钮被点击循环到第一个并继续,

感谢所有的帮助,并一如既往地感谢.

$('.udtalelse').addClass("passiv");
ctrlKunder(0);

$('#prev').click(function() {
    var index = getActive();
    if (index == 0) return;
    index--;
    ctrlKunder(index);
})
$('#next').click(function() {
    var index = getActive();
    if (index == $('.udtalelse').length - 1) return;
    index++;
    ctrlKunder(index);
})

function ctrlKunder(ele) {
    $('.udtalelse').removeClass("active").addClass("passiv");
    $('.udtalelse').eq(ele).removeClass("passiv").addClass("active");
}

function getActive() {
    var index;
    $('.udtalelse').each(function(i) {
        if ($(this).hasClass("active")) index = i;
    })
    return index;
}
Run Code Online (Sandbox Code Playgroud)
<ul class="kunder">
    <li><span class="udtalelse">Indhold 1</span></li>
    <li><span class="udtalelse">Indhold 2</span></li>
    <li><span class="udtalelse">Indhold 3</span></li>
</ul>
<span class="kunderpagination">
    <a href="#" id="prev">« Previous</a> |
    <a href="#" id="next">Next »</a>
</span>
Run Code Online (Sandbox Code Playgroud)

use*_*716 5

您的代码可以大大简化,如下所示:

var all = $('.udtalelse').addClass("passiv");

var i = -1;

$('#prev').click(function() {
    ctrlKunder( i = !i ? all.length - 1 : --i );
});
$('#next').click(function() {
    ctrlKunder( i = ++i % all.length );
}).click();

function ctrlKunder(ele) {
    all.removeClass("active").addClass("passiv");
    all.eq(ele).removeClass("passiv").addClass("active");
}
Run Code Online (Sandbox Code Playgroud)

也更有效,因为.udtalelse元素被缓存.

示例: http ://jsfiddle.net/3z9uc/


编辑:我忘了用小提琴中的修订更新答案.固定.