Создано следующее из основных примеров для Sortable.В этом примере есть дочерние элементы, которые будут использоваться в качестве подсписков для каждого элемента списка.
$(function() {
function resize(t, c) {
var h = (c * 18) + 9;
var p = (c * 1.2) + 0.6;
t.css("height", "calc(" + h + "px + " + p + "em)");
}
$("#sortable").sortable({
connectWith: ".child-list",
handle: ".ui-icon-arrowthick-2-n-s",
items: "> div.ui-state-default"
});
$("#sortable").disableSelection();
$(".child-list").sortable({
connectWith: ".parent-list",
receive: function(e, ui) {
var numItems = $(".ui-state-default", this).length;
resize($(this).closest(".ui-state-default"), numItems);
},
remove: function(e, ui) {
var numItems = $(".ui-state-default", this).length;
resize($(this).closest(".ui-state-default"), numItems);
}
});
});
#sortable {
margin: 0;
padding: 0;
width: 340px;
}
#sortable>div {
margin: 0 3px 3px 3px;
padding: 0.4em;
padding-left: 1.5em;
font-size: 1.4em;
height: 18px;
}
#sortable>div>span {
position: absolute;
margin-left: -1.3em;
}
#sortable .child-list {
display: block;
width: calc(340px - 2em);
min-height: 1em;
}
#sortable .child-list>div {
background: #999;
font-size: 0.8em;
}
.ui-state-highlight {
height: 1.5em;
line-height: 1.2em;
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<div id="sortable" class="parent-list">
<div class="ui-state-default">
<span class="ui-icon ui-icon-arrowthick-2-n-s"></span> Item 1
<div class="child-list">
</div>
</div>
<div class="ui-state-default">
<span class="ui-icon ui-icon-arrowthick-2-n-s"></span> Item 2
<div class="child-list">
</div>
</div>
<div class="ui-state-default">
<span class="ui-icon ui-icon-arrowthick-2-n-s"></span> Item 3
<div class="child-list">
</div>
</div>
<div class="ui-state-default">
<span class="ui-icon ui-icon-arrowthick-2-n-s"></span> Item 4
<div class="child-list">
</div>
</div>
<div class="ui-state-default">
<span class="ui-icon ui-icon-arrowthick-2-n-s"></span> Item 5
<div class="child-list">
</div>
</div>
</div>
Используя обратные вызовы receive
и remove
для сортируемого по дочернему элементу, элемент списка можно изменить, чтобы принять элемент.Это может быть не лучший пример, так как заполнитель для подсписка действительно не отображается должным образом.Вы можете улучшить его, если оно соответствует вашим потребностям.
Надеюсь, это поможет.