我有3个无序列表(例如,#list1
,#list2
和#list3
),目前,用户可以在这三个之间自由移动任何<li>
。如何防止在#list3
中删除任何项目?
用户应该能够在#list1
和#list2
之间自由移动项目,并且能够将从 #list3
移动到任何其他列表中,但不要将项目放入#list3
(无论它来自哪个列表)。
答案 0 :(得分:7)
如果您从stop
或beforeStop
方法返回false,则会取消排序。
调用.ui-sortable-placeholder
时,beforeStop
元素仍然存在,因此这可能是检查位置是否在#list3
内的最简单的位置:
myElement.sortable({
beforeStop: function (event, ui) {
if ($("#list3").find('.ui-sortable-placeholder').length) {
// about to drop item into #list3, so cancel the sort
return false;
}
}
});
<强>交替:强>
我不确定你是如何在多个列表上实例化一个可排序的(因为我之前没有使用connectWith
选项),但是如果你在每个列表上单独调用它,那么你可能甚至不需要find()
检查:
$("#list1").sortable({
connectWith: '#list2, #list3'
});
$("#list2").sortable({
connectWith: '#list1, #list3'
});
$("#list3").sortable({
connectWith: '#list1, #list3',
stop: function() { return false; }
});
不确定第二种方法是否有效,但如果您的代码结构相似,则可能值得一试。
答案 1 :(得分:0)
尝试
$("#list1,#list2,#list3").sortable({
connectWith: "#list1, #list2"
});
(当然还有你的其他可排序选项)