5

我有 3 个无序列表(例如和) #list1,目前,用户可以在这三个列表之间自由移动。我将如何防止任何物品被丢弃?#list2#list3<li>#list3

用户应该能够在#list1和之间自由移动项目#list2,并且能够将项目 #list3任何其他列表中移动,但不能将项目放入#list3(无论它来自哪个列表)。

4

2 回答 2

8

如果从stoporbeforeStop方法返回 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; }
});

不确定第二种方法是否有效,但如果您的代码已经具有类似的结构,则可能值得一试。

于 2013-02-04T13:46:36.157 回答
0

尝试

$("#list1,#list2,#list3").sortable({
    connectWith: "#list1, #list2"
});

(当然还有其他可排序的选项)

于 2013-02-04T14:08:30.430 回答