jQuery UI可排序 - 排除项目被删除

时间:2012-06-25 09:08:49

标签: jquery jquery-ui user-interface jquery-ui-sortable

是否可以将单个sortbale项目排除在另一个列表中?

这是JsFiddle。例如。项目2不应该在第二个列表中删除。

我真的不知道是否可以通过一些黑客攻击,但遗憾的是UI插件没有选项:(

非常感谢任何帮助。

修改 我忘了提到项目(在示例中是项目2)仍然可以排序,但不能在第二个列表中删除。

3 个答案:

答案 0 :(得分:5)

http://jsfiddle.net/UKUfe/(在此演示中,第2项在列表2中不可删除但仍可排序:)

这将有所帮助:下面的代码和解释:

<强>码

$("#sortable1, #sortable2").sortable({
    connectWith: ".connectedSortable",
    items: "li:not(.ui-state-disabled)",
    receive: function(event, ui) {

        if ($(ui.item).hasClass("foohulk")) {
           $(ui.sender).sortable('cancel');

            return false;

        }

    }
}).disableSelection();


​

<强> OLD

演示 http://jqueryui.com/demos/sortable/items.html http://jsfiddle.net/GGVeA/2/

Jquery论坛中的类似问题:http://forum.jquery.com/topic/can-i-lock-an-li-in-place-in-a-sortable-list

与期权等的良好联系。 :http://jqueryui.com/demos/sortable/

如果您要禁用项目添加.ui-state-disabled到项目li,(我听到您说:为什么ui-state-disabled :)转到以下链接并阅读API主题和东西:“互动提示”http://jqueryui.com/docs/Theming/API

希望这会有所帮助,:))

<强>码

$( "#sortable1, #sortable2" ).sortable({
        connectWith: ".connectedSortable",
        items: "li:not(.ui-state-disabled)"
}).disableSelection();

答案 1 :(得分:2)

像这样添加items: "li:not(.ui-state-disabled)"

$( "#sortable1, #sortable2" ).sortable({
    connectWith: ".connectedSortable",
    items: "li:not(.ui-state-disabled)"
}).disableSelection();​

并将ui-state-disabled类添加到 Item2 ,就像这样

<li class="ui-state-default ui-state-disabled">Item 2</li>`

这里是jsfiddle的例子

Exclude Items from being dropped jsfiddle example

另外,看看另一个例子

jQuery UI Sortable - Include / exclude items


修改

由于您更新了答案,因此完全更改了答案

您需要使用sortable的update事件并检查要删除的元素是否为禁止元素

像这样

update:function(event, ui) {
    if(ui.item.hasClass('ui-state-disabled') && ui.item.parent()[0].id === 'sortable2') return false;                
}

Exclude Items from being dropped on other sortable area

答案 2 :(得分:1)

我发现Tats_innit的答案非常有帮助。我需要添加的另一个部分是在无法删除项目时隐藏占位符。

我想这是对问题的一个常见的补充,所以我想我会分享它 - 你只需要处理sort事件,执行相同的类检查,你可以通过{访问占位符{1}}对象。

因此,在上一个答案的示例(http://jsfiddle.net/GGVeA/2/)的上下文中,完整的添加将是:

ui.placeholder