Как перетащить горизонтальный и вертикальный как в плагине jquery? - PullRequest
0 голосов
/ 02 ноября 2019

Один контейнер в другой контейнер Перетаскивание по горизонтали и вертикали как в jquery Plugin.

Каждый элемент из левого контейнера, я допускаю один уровень вложенности. Тем не менее, в правом контейнере я не хочу, чтобы он был вложен более чем во два уровня. Перетаскивание Горизонтальное и Вертикальное Перетаскивание.

enter image description here function Menu_init() {

    var oldContainer;

    var group = $("ol.example").sortable({

    group: 'nested',
    exclude: '.unsortable',
    connectWith: ".example2",

    afterMove: function (placeholder, container) {
        if (oldContainer !== container) {
            if (oldContainer)
                oldContainer.el.removeClass("active");
            container.el.addClass("active");
            oldContainer = container;
        }
    },

    isValidTarget: function ($item, container) {
        var depth = 1, // Start with a depth of one (the element itself)
                maxDepth = 10,
                children = $item.find('ol').first().find('li');

        depth += container.el.parents('ol').length;

        while (children.length) {
            depth++;
            children = children.find('ol').first().find('li');
        }

        return depth <= maxDepth;
    },

    onDrop: function ($item, container, _super) {
        container.el.removeClass("active");
        _super($item, container);

        var li = $item;

        li.attr('style', 'float:left;list-style-type: none;padding: 10px;text-align: center;');

        var children = li.children().children();
        var child;
        var numOfChildren = children.length;
        containerID = container.target[0].id;
        if (containerID !== 'myUL') {
            if (numOfChildren === 1) {

                li.children('a').css({
                    'visibility': 'visible'
                });
            } else {
                for (var element in children) {
                    child = children[element].nodeName;
                    if (child === 'LI') {
                        $(children[element]).find('a').css('visibility', 'visible');
                    } else if (child === 'A') {
                        $(children[element]).css('visibility', 'visible');
                    }
                }
            }
        } else {
            li.children('a').css('visibility', 'hidden');
        }
        var data = group.sortable("serialize").get(1);
        var jsonString = JSON.stringify(data, null, ' ');
    },
});

}

Я действительно понятия не имею, как я могу проверить уровень вложенности элемента, когда он перетаскивается из левого контейнера в правый контейнер. Я просто знаю алгоритм, что если элементы уже имеют вложенный уровень 2, то я просто удаляю

    внутри ... и добавляю его обратно, если он находится на нулевом уровне или на одном уровне вложенности.
    Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
    ...