我有 3 个无序列表(例如和) #list1
,目前,用户可以在这三个列表之间自由移动。我将如何防止任何物品被丢弃?#list2
#list3
<li>
#list3
用户应该能够在#list1
和之间自由移动项目#list2
,并且能够将项目从 #list3
任何其他列表中移动,但不能将项目放入#list3
(无论它来自哪个列表)。
我有 3 个无序列表(例如和) #list1
,目前,用户可以在这三个列表之间自由移动。我将如何防止任何物品被丢弃?#list2
#list3
<li>
#list3
用户应该能够在#list1
和之间自由移动项目#list2
,并且能够将项目从 #list3
任何其他列表中移动,但不能将项目放入#list3
(无论它来自哪个列表)。
如果从stop
orbeforeStop
方法返回 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; }
});
不确定第二种方法是否有效,但如果您的代码已经具有类似的结构,则可能值得一试。
尝试
$("#list1,#list2,#list3").sortable({
connectWith: "#list1, #list2"
});
(当然还有其他可排序的选项)