【问题标题】:JQuery Nestable and Sortable restrictJQuery 可嵌套和可排序限制
【发布时间】:2020-05-15 19:15:04
【问题描述】:

嗨,请帮助我第一次使用 J query Ne stable。我想限制 Admin 和 Transported 选项卡不应该拖动。 [在此处输入链接描述][2] 左侧用户列表中的用户仅拖放到角色列表中的管理员和传输器选项卡下方。

如何禁用仅对选定标签的拖动功能

【问题讨论】:

  • 你可以为你的问题创建一个小提琴吗?这将有助于更快地提供解决方案。
  • 已通过自己创建 JSFiddle 回答了这个问题。

标签: jquery jquery-ui jquery-nestable


【解决方案1】:

看看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');
        });
});

【讨论】:

    猜你喜欢
    • 2016-05-15
    • 2012-11-06
    • 2011-02-18
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 2013-07-24
    • 2012-06-01
    • 1970-01-01
    相关资源
    最近更新 更多