как я могу отключить опцию перетаскивания в jsTree? Я хочу отключить движущиеся узлы. Как я могу этого добиться?
jsTree - отключить опцию перетаскивания
Ответы (6)
просто добавьте это:
"default" : {
draggable : false
},
он должен быть в типах: раздел.
Это просто. Не добавляйте опцию dnd в плагины.
Это включает в себя функцию перетаскивания
"plugins": ["themes","html_data","dnd","ui","types"]
Это отключает функцию перетаскивания
"plugins": ["themes","html_data","ui","types"]
Не добавление «dnd» к типам работает. Вы также можете использовать свойство плагина, это отключит все перемещения.
dnd: {
"is_draggable": function (node) {
return false; // flip switch here.
}
},
В новой версии JSTree это изменилось.
То, как я это сделал (в v1.0), было в разделе crrm. Мой check_move выглядел так:
"check_move" : function (m) {
return (m.o.data("rel")=="itemsetting" ? false : true);
}
m.o.data("rel") - это то, как вы получаете тип перетаскиваемого узла.
Это делает узел этого типа недоступным для перетаскивания, присваивая ему значок X независимо от того, куда перетаскивается узел.
Я хотел отключить перетаскивание для отключенных узлов, это сработало:
const config = {
plugins: ['dnd', ...],
dnd: {
is_draggable: node => !node[0].state.disabled,
},
}
Свойство is_draggable отключает только перетаскивание узлов в другие позиции внутри дерева. Но узлы по-прежнему можно перетаскивать на странице. Таким образом, можно, например, перетащить узел в поле ввода на странице.
Поскольку исследование того, как полностью отключить перетаскивание, заняло у меня некоторое время, это может быть полезно для других, которые наткнулись на эту тему.
Вы можете полностью отключить перетаскивание, вызвав preventDefault() для события:
dnd: {
"is_draggable": function (node) {
e.preventDefault();
return false;
}
}
https://github.com/vakata/jstree/issues/1103