我有6个由课程标识的元素:.item-1
,.item-2
,...,.item-6
。
如果用户点击某个项目,则该项目应重命名为.item-1
,并且所有其他项目应相应地重命名,顺序相同。例如,如果用户点击.item-3
:
1。 2。 3。 4。 5。 6
点击 - ^
结果: 5。 6。 1。 2。 3。 4
我想知道是否有比两个循环更好的算法(一个用于clicked-item(3)到end-of-series(6),一个用于start-of-series(1)到clicked-item(3) ))。
这是我已有的代码:
这就是HTML的结构:
<div class="showcase-container showcase-container-1"></div>
$(".showcase-container").click(function()
{
var numberOfItems = $(".showcase-container").length;
var clickedItem = $(this).attr("class").match(/showcase-container-[1-9]*/);
clickedItem = parseInt(clickedItem[0].replace("showcase-container-", ""));
$(".showcase-container").removeClass("showcase-container-first");
$(this).addClass("showcase-container-first");
var currentItem = clickedItem;
while(currentItem < numberOfItems)
{
$(".showcase-container").eq(currentItem-1)
.removeClass("showcase-container-" + currentItem)
.addClass("showcase-container-" + (parseInt(currentItem) + 1));
currentItem++;
}
});
答案 0 :(得分:0)
使用整数模的伪代码:
K = ItemClicked (zero-based)
N = Items.length
for i = 0 to N - 1
Items[i].Name = "Item" + 1 + (N + i - K) % N
对于您的示例K = 2,N = 6,并且对于第一个条目
num = 1 + (6 + 0 - 2) modulo 6 = 1 + 4 = 5