В любое время, когда вы увеличиваете, проверьте новое значение. Если это больше, чем общее количество опций, сбросьте его до нуля. Если это меньше, чем общее количество опций, установите его на макс. Просто, +=1
или -=1
.
Например:
var total = 5,
currentNumber = 0,
numContainer = $("#number");
$(".up, .down").on("click", function(){
currentNumber = parseInt(numContainer.text(), 10);
if ($(this).hasClass("up")) {
if (++currentNumber > total) currentNumber = 1;
}
if ($(this).hasClass("down")) {
if (--currentNumber < 1) currentNumber = total;
}
numContainer.text(currentNumber);
});
Это может быть дополнительно уменьшено, чтобы использовать тройной оператор, а также взломать функциональность короткого замыкания оператора конъюнкции:
var t = 5, c = 0, n = $("#number");
$(".up, .down").on("click", function(){
c = parseInt(n.text(), 10);
$(this).hasClass("up") ? (++c > t) && (c = 1) : (--c < 1) && (c = t);
n.text(c);
});
Демонстрация: http://jsbin.com/egifas/edit#javascript,live
"-ve number"? Это какой-то ужасный новый способ сказать «негатив»? – ThiefMaster
@ThiefMaster Да. Это увеличение производительности на 62,5%. –
@RoryMcCrossan: нет, если вы посчитаете время, необходимое для реагирования на жестокое обращение с языком посредством текстовых соглашений ... –