【问题标题】:jstree detect multiple items being movedjstree检测多个正在移动的项目
【发布时间】:2018-11-11 15:51:48
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: javascript jquery treeview jstree


    【解决方案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”事件在 move_node 事件之前触发,可能会有所帮助。您必须将它们全部粘合在一起才能进行一次 AJAX 调用。

    【讨论】:

    • 好主意 - 将尝试实施并回复您
    猜你喜欢
    • 1970-01-01
    • 2020-06-08
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多