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.