jQuery looping prev next

Я обнаружил, что этот бит кода вист ищет базовый слайдер, и его достаточно близко делает то, что я хочу, но я бы хотел, чтобы он зациклился, когда он добрался до последнего li, т. Е. Если последняя кнопка li и next нажата на 1-ое и продолжит,

вся помощь приветствуется и, как всегда, заблаговременно.

$('.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; } 

 
  • Indhold 1
  • Indhold 2
  • Indhold 3
|

Ваш код может быть значительно упрощен следующим образом:

 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"); } 

Также более эффективен, поскольку элементы .udtalelse кэшируются.

Пример: http://jsfiddle.net/3z9uc/


EDIT: Я забыл обновить ответ с ревизией, которая находится в скрипке. Исправлена.

Измените это на:

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

И если вы хотите, чтобы предыдущий:

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