jQuery UI Sortable - 防止丢弃一个特定的列表

时间:2013-02-04 12:20:41

标签: jquery jquery-ui jquery-ui-sortable

我有3个无序列表(例如,#list1#list2#list3),目前,用户可以在这三个之间自由移动任何<li>。如何防止在#list3中删除任何项目?

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

2 个答案:

答案 0 :(得分:7)

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

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