Я заметил некоторые синтаксические ошибки в вашем коде.Это может быть связано с тем, что это только частичный пример.
Вы можете добавить данные к своему помощнику или просто скрыть элементы в движении и затем переместить их на новую позицию после stop
.Вот пример последнего:
$(function() {
function setUsersList() {
$('ul.sortable').on('click', 'li', function(e) {
if (e.ctrlKey || e.metaKey) {
$(this).toggleClass("selected");
} else {
$(this).addClass("selected")
.siblings().removeClass('selected');
}
});
$('.users-list').sortable({
items: "> li:not(.to-resize)",
connectWith: '.users-list',
helper: function(e, item) {
var list = item.parent();
var elements = $('.selected:not(.to-resize)', list);
if (elements.length === 0) {
return item;
}
elements.addClass("move-hide");
var helper = $('<li>', {
class: "ui-state-default",
style: "width: 178px"
});
helper.text(elements.length + " Users");
return helper;
},
stop: function(e, ui) {
var list = $(this);
var elements = $(".move-hide", list);
elements.each(function(ind, el) {
ui.item.before($(el));
});
$(".move-hide", list).removeClass("move-hide selected");
}
});
$('.users-list').disableSelection();
}
setUsersList();
});
.sortable {
list-style-type: none;
margin: 0;
padding: 0;
width: 200px;
}
.sortable li {
margin: 0 5px 5px 5px;
padding: 5px;
font-size: 1.2em;
height: 1.5em;
}
.sortable li.selected {
border-color: red;
}
.sortable li.move-hide {
display: none;
}
<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>
<ul id="users-list-1" class="sortable users-list">
<li class="ui-state-default">User 1</li>
<li class="ui-state-default">User 2</li>
<li class="ui-state-default">User 3</li>
<li class="ui-state-default">User 4</li>
<li class="ui-state-default">User 5</li>
<li class="ui-state-default">User 6</li>
<li class="ui-state-default">User 7</li>
</ul>
По-прежнему существуют некоторые логические проблемы, например, если пользователь щелкает мышью для перетаскивания одного элемента, это создает mousedown
, drag
,drop
, mouseup
серия событий.Что происходит, так это то, что сортировка завершается для одного элемента списка, и затем по этому элементу запускается щелчок.
У вас также нет возможности отменить выбор элементов.Вы можете добавить это.
Надеюсь, это поможет.