Я пытаюсь получить порядок вложенного списка, который можно заказать с помощью SortableJS .
Мой список выглядит так:
<div id="nestedDemo" class="list-group col nested-sortable">
<div class="list-group-item" data-id="1">Titel 1</div>
<div class="list-group-item" data-id="2">Titel 2</div>
<div class="list-group-item" data-id="3">Titel3
<div class="list-group nested-sortable">
<div class="list-group-item" data-id="4">Titel 4</div>
<div class="list-group-item" data-id="5">Titel 5</div>
<div class="list-group-item" data-id="6">Titel 6</div>
</div>
</div>
<div class="list-group-item" data-id="7">Titel 7</div>
<div class="list-group-item" data-id="8">Titel 8</div>
<div class="list-group-item" data-id="9">Titel 9</div>
<div class="list-group-item" data-id="10">Titel10
<div class="list-group nested-sortable">
<div class="list-group-item" data-id="11">Titel 11</div>
<div class="list-group-item" data-id="12">Titel 12</div>
</div>
</div>
</div>
и мой код JavaScript:
<script>
$(document).ready(function() {
var nestedSortables = $(".nested-sortable");
// Loop through each nested sortable element
for (var i = 0; i < nestedSortables.length; i++) {
new Sortable(nestedSortables[i], {
group: 'nested',
animation: 150,
fallbackOnBody: true,
swapThreshold: 0.65,
onSort: function (e) {
var items = e.to.children;
var result = [];
for (var i = 0; i < items.length; i++) {
result.push($(items[i]).data('id'));
}
$('#standard_order').val(result);
}
});
}
});
</script>
Моя цель - получать заказ при каждом изменении списка и сохранять заказ в поле ввода с идентификатором standard_order
. Я делаю это, потому что у меня есть кнопка отправки, чтобы сохранить заказ в базе данных.
Моя проблема в том, что когда я меняю порядок, в моем поле ввода сохраняется не полный список, а только список, в котором я отбросил текущий элемент.
Я пытаюсь использовать один список, но вложенный список не работает ..
Можете ли вы помочь мне решить мою проблему?
Edit:
Мне кажется, у меня есть общее решение.
var nestedSortables = [].slice.call(document.querySelectorAll('.nested-sortable'));
var sortables = [];
// Loop through each nested sortable element
for (var i = 0; i < nestedSortables.length; i++) {
sortables[i] = new Sortable(nestedSortables[i], {
group: 'nested',
animation: 150,
fallbackOnBody: true,
swapThreshold: 0.65
});
}
$('#sendButton').click(function () {
for(var y = 0; y < sortables.length; y++) {
var order = sortables[y].toArray();
console.log(order);
}
});
Это дает мне порядок каждого div
с классом nested-sortable
, когда я нажимаю кнопку с идентификатором sendButton
.
Например, вывод консоли выглядит так:
(7) ["Titel 1", "Titel 2", "Titel 3", "Titel 7", "Titel 8", "Titel 8", "Titel 10"]
(3) ["Titel 4", "Titel 5", "Titel 6"]
(2) ["Titel 11", "Titel 12"]
Но я не знаю, как я могу получить иерархическую вложенную структуру ... Я не могу понять, кто является родителем div.