Jstree обнаруживает перемещение нескольких предметов - PullRequest
0 голосов
/ 11 ноября 2018

Используя jstree возможно ли определить, перемещаются ли несколько выбранных узлов одновременно ... или какой из узлов обрабатывается в настоящее время? (Вы можете выбрать несколько узлов, используя клавиши shift или ctrl .)

Я использую событие move_node.jstree, но не вижу ничего очевидного в свойствах e или data, которые могли бы сказать мне, перемещается ли более одного элемента, или какой индекс передал узел к событию есть в списке.

$tree.bind("move_node.jstree", function (e, data) { ... }

Каждый раз, когда узел перемещается из одного родительского узла в другой родительский узел, мне нужно вызывать AJAX ..., что приводит к некоторой обработке на сервере.

Если несколько узлов перемещаются одновременно, просто бессмысленно выполнять эту обработку на сервере для каждого отдельного узла ... имеет смысл запускать AJAX только на последнем узле.

1 Ответ

0 голосов
/ 12 ноября 2018

Если вы используете плагин Drag and Drop (dnd) для jsTree, «move_node.jstree» запускается для каждого перемещаемого узла. Поскольку событие инициируется для каждого узла, несколько перемещаемых элементов не могут быть обнаружены. Однако вы можете использовать событие плагина dnd для обнаружения перемещения нескольких элементов.

$(document).on("dnd_move.vakata", function (e, data) {
    console.log("DND Move"); //Triggered continuously during drag 
}).bind("dnd_stop.vakata", function(e, data) { //Triggered on drag complete
    console.log("Stop dnd");
    console.log("Nodes being moved: "+ data.data.nodes);
});

oTree.bind("move_node.jstree", function (e, data) { 
    console.log("Move Event");
});

Событие "dnd_stop.vakata" запускается перед событиями move_node и может быть полезным. Вы должны будете склеить их все вместе, чтобы сделать один AJAX-вызов.

...