JsTree: предотвращение перетаскивания между двумя разными деревьями

Я использую плагин jstree dnd. Чтобы установить узлы, где разрешено удаление, я использую плагин "types" и свойство valid_children. Это работает даже между двумя разными деревьями.

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

Любое решение для этого?

1 ответ

На самом деле я нашел очень простое решение, добавив плагин в jstree:

$.jstree.plugins.myplugin = function (options, parent) {

    // Blocks DND on an other tree than the original one
    this.check = function (chk, obj, par, pos, more) {
        if(parent.check.call(this, chk, obj, par, pos, more) === false) { return false; }
        if (more && more.dnd && more.is_multi) {return false}
        return true;
        };
    };

Функция 'check' уже используется плагином 'DND' и 'types', чтобы определить, какие узлы являются потенциальной областью для удаления. Это также приводит к отображению зеленого флажка или красного креста. More.is_multi позволяет обнаружить погоду, когда цель находится в ином экземпляре дерева, чем исходный экземпляр.

Тогда не забудьте добавить этот плагин в список плагинов при создании нового экземпляра jstree.

Другие вопросы по тегам