HTML
<div class="draggable-items">
<div class="main-groups">Item 1</div>
<div class="main-groups">Item 2</div>
<div class="main-groups">Item 3</div>
<div class="main-groups">Item 4</div>
</div>
<div id="container"></div>
JQuery
$(function() {
$( ".main-groups" ).draggable({
connectToSortable: "#container",
helper: "original",
revert: "invalid"
});
$( "#container" ).sortable({
revert: true,
receive: function(event, ui) {
var html = [];
$(this).find('.main-groups').each(function() {
html.push('<div class="main-groups"><b><a href="#'+$(this).attr("id")+'">'+$(this).html()+'</a></b></div>');
});
$(this).find('.main-groups').replaceWith(html.join(''));
}
});
});
У вас может быть проще использовать подключенные сортируемые списки, например:
$(function () {
$(".draggable-items").sortable({
connectWith: "#container",
tolerance: "pointer",
over: function (event, ui) {
$('.ui-sortable-helper').outerWidth($(".draggable-items").innerWidth()).css('background', '#333');
}
});
$("#container").sortable({
connectWith: ".draggable-items",
tolerance: "pointer",
over: function (event, ui) {
$('.ui-sortable-helper').outerWidth($("#container").innerWidth()).css('background', 'blue');
}
});
});
Оказывается, что при наведении курсора на контейнер, и поскольку он был установлен на 100%, он менял ширину, чтобы соответствовать контейнеру.
Чтобы исправить это, я изменил это на следующее:
$( ".main-groups" ).draggable({
connectToSortable: "#accordion2",
helper: "original",
revert: "invalid",
start : function(event, ui) {
ui.helper.width($(this).width());
}
});
Это не позволяет перетаскиваемому элементу изменять свою ширину при зависании контейнера. Он меняет свою ширину, когда падает на нее.
Но мне все еще не удалось выяснить, как я могу удалить выпавшие элементы в контейнере к исходному заполнителю.