代码之家  ›  专栏  ›  技术社区  ›  freefaller

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

  •  0
  • freefaller  · 技术社区  · 7 年前

    jstree 是否可以检测多个选定节点是否同时移动。。。或者当前正在处理哪个节点(可以使用 控制键 钥匙。)

    move_node.jstree 事件,但我看不到任何明显的 e data 属性,这些属性可以告诉我是否移动了多个项,或者列表中传递给事件的节点的索引是什么。

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

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

    如果同时移动多个节点,则在服务器上为每个节点执行此处理毫无意义。。。只有在服务器上运行AJAX才有意义 节点。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Stephen S    7 年前

    如果您正在为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”事件在move_节点事件之前触发,可能会有所帮助。不过,您必须将它们粘在一起才能进行一次AJAX调用。