如果我理解正确,我认为我对您的问题有一些解决方案。
首先,您应该为此使用一些服务器端语言(例如 php),并且要创建组和项目,您应该使用一些数据库(例如 mysql)。在您的数据库中,您需要创建两个表 Items 和 Groups,并在它们之间建立一个(组)对多个(项目)的关系。当您这样做时,您需要使用您的服务器端语言获取组和项目,并将其显示为您的可排序部分。
您需要像这样显示您的组和项目:
for($i = 0; $i < $groups; $i++)
{
echo '<ul id="group_'.$i.'" group_id="'.$groups[$i]->getId().'" class="droptrue">';
echo '<li class="disabled">'.$name_of_group.'</li>'; - this item needs to be disabled for drag and drop and you can do that for any individual item with sortable ui plugin
for($j = 0; $j < count($items); $j++)
{
echo '<li id="'.$items[$j]->getId().'" class="enabled ui-state-highlight">'.$item.'</li>';
}
echo '</ul>';
}
这是您可以对项目进行分组并使用它们进行操作的一种方式。
这是用于操作项目的 javascript 代码。
$(function() {
$( "ul.droptrue" ).sortable({
connectWith: "ul",
items: "> li.enabled",
start: function(event, ui){
var parent = ui.item.parent();
parent.addClass('modified_ul');
},
stop: function(event, ui){
var parent = ui.item.parent();
parent.addClass('modified_ul');
},
update: function(event, ui){
$('#update_channel_order').removeAttr('disabled').removeClass('button_big_disabled');
}
});
$('#update_channel_order').click(function(){
if (!$(this).attr('disabled'))
{
$('.modified_ul').each(function(){
var array_for_db = [];
var group_id = $(this).attr('group_id');
var lis_enabled = $(this).children('.enabled');
for(i = 0; i < lis_enabled.length; i++)
{
var id = lis_enabled[i].attributes['id'].value;
var obj = {};
obj['id'] = id;
obj['index'] = i;
array_for_db.push(obj);
}
$.ajax({
url: '/path/to/your/function/group_id/' + group_id + '/values/' + JSON.stringify(array_for_db),
beforeSend: function() {
$('#loader_channel_order').show();
},
success: function(data) {
location.reload();
},
complete: function() {
$('#loader_channel_order').hide();
}
});
});
$(this).addClass('button_big_disabled').attr('disabled', 'disabled');
}
else
{
return false;
}
});
});