【发布时间】:2012-06-26 12:46:58
【问题描述】:
是否可以排除单个分类项目被丢弃到另一个列表中?
这是JsFiddle。例如。项目 2 不应放在第二个列表中。
我真的不知道这是否可以通过一些 hack,但不幸的是 UI 插件没有选项:(
非常感谢任何帮助。
编辑: 我忘了提到该项目(在示例中是项目 2)应该仍然是可排序的,但不能放在第二个列表中。
【问题讨论】:
标签: jquery jquery-ui user-interface jquery-ui-sortable
是否可以排除单个分类项目被丢弃到另一个列表中?
这是JsFiddle。例如。项目 2 不应放在第二个列表中。
我真的不知道这是否可以通过一些 hack,但不幸的是 UI 插件没有选项:(
非常感谢任何帮助。
编辑: 我忘了提到该项目(在示例中是项目 2)应该仍然是可排序的,但不能放在第二个列表中。
【问题讨论】:
标签: jquery jquery-ui user-interface jquery-ui-sortable
像这样添加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;
}
【讨论】:
:)
新 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();
旧
演示 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 主题和内容:“交互提示”@987654326 @
希望这会有所帮助,:)
代码
$( "#sortable1, #sortable2" ).sortable({
connectWith: ".connectedSortable",
items: "li:not(.ui-state-disabled)"
}).disableSelection();
【讨论】:
:) 你认为它很难,除此之外你还好吗? :) 这个问题也很常见:forum.jquery.com/topic/… 或 我什至知道启用禁用出现问题的早期部分:) forum.jquery.com/topic/enable-disable-sort
exact duplicate
:)
exact duplicate为什么是垃圾邮件?
我发现 Tats_innit 的回答很有帮助。我需要添加的一个额外部分是在无法删除项目时隐藏占位符。
我想这是对问题的一个足够常见的补充,所以我想我会分享它 - 您只需要处理 sort 事件,执行相同的类检查,您就可以通过 ui.placeholder 访问占位符对象。
因此,在上一个答案示例 (http://jsfiddle.net/GGVeA/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;
}
},
sort: function (event, ui) {
if ($(ui.item).hasClass("foohulk")) {
ui.placeholder.hide();
}
else {
ui.placeholder.show();
}
}
}).disableSelection();
【讨论】: