jstree检测正在移动的多个项目

时间:2018-11-11 15:51:48

标签: javascript jquery treeview jstree

使用jstree是否可以检测是否同时移动了多个选定节点...或当前正在处理哪个节点? (您可以使用 shift ctrl 键选择多个节点。)

我正在使用move_node.jstree事件,但是在edata属性中看不到任何明显的东西可以告诉我是否移动了多个项目,或节点传递给事件的索引在列表中。

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

每次将一个节点从一个父节点移动到另一个父节点时,我都需要调用AJAX ...,这会导致服务器上进行某些处理。

如果同时移动多个节点,则在服务器上为每个单独的节点进行此处理根本没有意义...仅在 last 节点上运行AJAX才有意义

1 个答案:

答案 0 :(得分:1)

如果对jsTree使用拖放插件(dnd),则会为每个移动的节点触发“ 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”事件,这可能会有所帮助。您必须将它们粘合在一起,才能进行单个AJAX调用。