嗨,请帮助我第一次使用 J query Ne stable。我想限制 Admin 和 Transported 选项卡不应该拖动。[在此处输入链接描述][2] 左侧用户列表中的用户仅拖放到角色列表中的管理员和传输器选项卡下方。
如何禁用仅对选定选项卡的拖动功能
嗨,请帮助我第一次使用 J query Ne stable。我想限制 Admin 和 Transported 选项卡不应该拖动。[在此处输入链接描述][2] 左侧用户列表中的用户仅拖放到角色列表中的管理员和传输器选项卡下方。
如何禁用仅对选定选项卡的拖动功能
看看 JSFiddle:https ://jsfiddle.net/1vcs0e47/
我从演示链接准备了这个 JSFiddle:https ://dbushell.com/Nestable/
我所做的事情:
1)添加了一个输入元素,您可以在其中键入列表名称,如“项目 1”、“项目 2”等。(注意:文本搜索区分大小写,此搜索文本也仅用于演示目的,你可以实现比我用过的更好的搜索想法。)
2) 在更改输入元素时,我们找到了具有类“dd-handle”的 div,并将 css“pointer-events”应用为属性“none”。参考:https ://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events
3) Draggable 不会应用于指针事件被禁用的元素,我们也这样做了。还使嵌套列表太禁用。
4) 给出了一个启用所有禁用列表的按钮,只是为了测试实例。
JS代码:
$(document).ready(function()
{
var updateOutput = function(e)
{
var list = e.length ? e : $(e.target),
output = list.data('output');
if (window.JSON) {
output.val(window.JSON.stringify(list.nestable('serialize')));//, null, 2));
} else {
output.val('JSON browser support required for this demo.');
}
};
// activate Nestable for list 1
$('#nestable').nestable({
group: 1
})
.on('change', updateOutput);
// activate Nestable for list 2
$('#nestable2').nestable({
group: 1
})
.on('change', updateOutput);
// output initial serialised data
updateOutput($('#nestable').data('output', $('#nestable-output')));
updateOutput($('#nestable2').data('output', $('#nestable2-output')));
$('#nestable-menu').on('click', function(e)
{
var target = $(e.target),
action = target.data('action');
if (action === 'expand-all') {
$('.dd').nestable('expandAll');
}
if (action === 'collapse-all') {
$('.dd').nestable('collapseAll');
}
});
$('#nestable3').nestable();
$('#disabled_listname').on('change', function()
{
var disabling_listname = $.trim($(this).val());
console.log('disabling_listname=', disabling_listname);
console.log('element length=', $('div.dd-handle:contains("'+ disabling_listname +'")').length);
if($('div.dd-handle:contains("'+ disabling_listname +'")').length > 0)
{
$('div.dd-handle:contains("'+ disabling_listname +'")').addClass('dd-handle-disable');
$('div.dd-handle:contains("'+ disabling_listname +'")').next('ol.dd-list').find('.dd-handle').addClass('dd-handle-disable');
}
if($('div.dd3-content:contains("'+ disabling_listname +'")').length > 0)
{ // just added this conditions for "Draggable Handles" example, only for demo purpose.
$('div.dd3-content:contains("'+ disabling_listname +'")').parent().addClass('dd-handle-disable');
$('div.dd3-content:contains("'+ disabling_listname +'")').next('ol.dd-list').find('.dd-handle').addClass('dd-handle-disable');
}
});
$('#enable_dragging').on('click', function()
{
$('.dd-handle-disable').removeClass('dd-handle-disable');
});
});