Вы не можете напрямую изменить номера индексов. Кроме того, перемещение элемента перед следующим элементом в строке не увеличивает индексный номер на 2.
Номер индекса элемента представляет его положение в массиве так же, как у водителей есть позиции в гонке. Когда один из гонщиков берет другого, он занимает его место, а положение более медленного водителя падает. То же самое, сам акт перемещения одного элемента массива вперед перемещает другого назад (общее количество элементов сохраняется). Ни один из двух элементов не может совместно использовать индекс, и ни один элемент не может иметь индекс больше, чем общее количество элементов в массиве. (точнее, это больше или равно, потому что индексы начинаются с нуля).
Вы можете, однако, управлять упорядочением элементов. Простым способом сделать это с помощью jQuery будут функции .before() и .after(). В качестве альтернативы функции .insertBefore() и .insertAfter() обеспечивают такую же функциональность, но часто более читабельны и интуитивно понятны.
функция, которая перемещает элемент после его непосредственного собрата может выглядеть следующим образом:
function moveElementDown(elementSelector){
var element = $(elementSelector);
element.insertAfter(element.next());
}
Если вы хотите иметь другую функцию, чтобы переместить элемент обратно, вы можете сделать это так:
function moveElementUp(elementSelector){
var element = $(elementSelector);
element.insertBefore(element.prev());
}
И если вам действительно нужно, чтобы переместить элемент определенное количество пробелов, обобщенная функция, как это будет делать:
function moveElement(elementSelector, numOfSpaces){
if(numOfSpaces=== 0)
return;
var element = $(elementSelector);
var siblings = element.parent().children();
var targetIndex = Math.max(0,Math.min(element.index() + numOfSpaces, siblings.length-1));
if(targetIndex === element.index())
return;
if(targetIndex === 0)
element.parent().prepend(element);
else if(targetIndex === siblings.length-1)
element.parent().append(element);
else if (numOfSpaces> 0)
element.insertBefore(siblings[targetIndex+1]);
else
element.insertAfter(siblings[targetIndex-1]);
}
Что вы пытаетесь достичь? '$ (selector) .index()'/'$ .index ('selector')'/'$ (parent) .index ('child')' будет возвращать индекс элемента в dom, для этого – Justinas
нет установщика не может изменить индекс элемента. но может изменить индекс, поместив элемент в соответствии с родительским. – WhoAmI
Я редактировал вопрос, чтобы сделать его более ясным –