Я изо всех сил пытаюсь придумать чистое решение для этого:
- В карусели 7 элементов, поэтому 0 - 6.
- Индекс 3 является средним
- Если, например, щелкнуть второй элемент (индекс 1), каждый элемент должен переместиться на 2 позиции вправо. Если щелкнуть последний элемент (индекс 6), ему нужно будет переместиться на 3 позиции влево.
function centerCarouselOn(index, callback) { var items = $('li', carousel); var middleIdx = Math.floor(items.length / 2); var direction = null; var iterCount = 0; if(index === middleIdx) return; if(index > middleIdx) { direction = 'left'; iterCount = (index - middleIdx); } else { direction = 'right'; iterCount = (middleIdx - index); } $('li', carousel).each(function(k, v) { var li = $(v); // Here I need to iterate n places to the left or right // e.g: // direction = left, iterCount = 3 // Then each li by index would need this sequence: // 0: 6, 5, 4 // 1: 0, 6, 5 // 2: 1, 0, 6 // 3: 2, 1, 0 // 4: 3, 2, 1 // 5: 4, 3, 1 // 6: 5, 4, 3 (this one moves to center - index 3) }); }