вам просто нужно поймать update
событие сортируемого. Я бы порекомендовал вам сохранить исходный заказ
let originalOrder = {'first':1,'second':2,'third':3,'forth':4,'fifth':5};
и сохранить какой-то идентификатор в каждом элементе -
<li class="ui-state-default" data-value="first">Item 1b</li>
Также на случай, если мы хотим сохранить заказ только на один список, я бы разделил эти два сортируемых инициализации -
$( "#sortable1" ).sortable({
connectWith: ".connectedSortable",
placeholder: "ui-state-highlight",
update: keepOriginalOrder
}).disableSelection();
$( "#sortable2" ).sortable({
connectWith: ".connectedSortable",
placeholder: "ui-state-highlight"
}).disableSelection();
И главное веселье c, которое будет делать все маги c -
function keepOriginalOrder(e, ui) {
var selector = $('#sortable1'),
element = selector.children('li');
element.sort(function(a,b) { return originalOrder[$(a).attr('data-value')] - originalOrder[$(b).attr('data-value')]; });
element.detach().appendTo(selector);
}
Я не сделал используйте просто числа в качестве идентификаторов, просто чтобы показать, что вы можете использовать исходное значение в качестве значения данных. Просто убедитесь, что вы установили originalOrder с правильными номерами.
Попробуйте это - https://jsfiddle.net/d1h8xvnj/