Учитывая следующий список
<ul class="listitems">
<li data-position="1">Item 1</li>
<li data-position="2">Item 2</li>
<li data-position="3">Item 3</li>
<li data-position="4">Item 4</li>
</ul>
на странице есть некоторые функциональные возможности, позволяющие менять позиции. Например, они могут перейти в следующее состояние (пример только, порядок может быть любым):
<ul class="listitems">
<li data-position="3">Item 3</li>
<li data-position="2">Item 2</li>
<li data-position="1">Item 1</li>
<li data-position="4">Item 4</li>
</ul>
Я ищу небольшую функцию для reset заказа. Пока у меня есть следующее:
function setPositions()
{
$( '.listitems li' ).each(function() {
var position = $(this).data('position');
$(this).siblings().eq(position+1).after(this);
});
}
Но он не работает правильно. Что я делаю неправильно?
Дополнительным условием является то, что порядок списка может не измениться, поэтому функция должна работать и в этом сценарии.