Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 双jsTree实现_Javascript_Jquery_Tree_Javascript Framework_Jstree - Fatal编程技术网

Javascript 双jsTree实现

Javascript 双jsTree实现,javascript,jquery,tree,javascript-framework,jstree,Javascript,Jquery,Tree,Javascript Framework,Jstree,我是jsTree的新手,我想使用双jsTree [左JsTrree][>>][右JsTrree] “>>”:用于从左向右复制所选节点的按钮 我想从左到右复制部分树层次结构 没有重复的节点 我不想复制所选节点的子节点 根据右jsTree结构,只有左jsTree中的选定节点合并到右jsTree中 若用户从左侧jsTree中选择了任何节点,则在按钮(“>>”)上单击“我想将部分树从所选节点复制到根节点” 左jsTree如下所示 -----------------------------------

我是jsTree的新手,我想使用双jsTree

[左JsTrree][>>][右JsTrree]

“>>”:用于从左向右复制所选节点的按钮

我想从左到右复制部分树层次结构

  • 没有重复的节点
  • 我不想复制所选节点的子节点
  • 根据右jsTree结构,只有左jsTree中的选定节点合并到右jsTree中
若用户从左侧jsTree中选择了任何节点,则在按钮(“>>”)上单击“我想将部分树从所选节点复制到根节点”

左jsTree如下所示

---------------------------------------------------------------
现在假设用户选择了节点A2.1,然后在按钮(“>>”)之后,单击下面的部分树应该显示在右侧的jsTree中

[#1]右jsTree:

 Root
     -----A
          -----A2
               -----`A2.1` 
Root
     -----A
          -----A2
               -----A2.1 
     -----C
          -----`C1`
Root
     -----A
          -----`A1`
          -----A2
               -----A2.1                   
     -----C
          -----C1
现在根节点被添加到右jsTree中,现在只有选中的节点应该合并到右jsTree中

----------------------------------------------------------------------------------------

现在假设用户选择了C1,那么只有C1应该合并到右边的jsTree中

[#2]从左jsTree添加C1后的右jsTree结构:

 Root
     -----A
          -----A2
               -----`A2.1` 
Root
     -----A
          -----A2
               -----A2.1 
     -----C
          -----`C1`
Root
     -----A
          -----`A1`
          -----A2
               -----A2.1                   
     -----C
          -----C1
假设用户选择A1,则A1应合并到适当的位置
[#3]从左jsTree添加A1后的右jsTree结构:

 Root
     -----A
          -----A2
               -----`A2.1` 
Root
     -----A
          -----A2
               -----A2.1 
     -----C
          -----`C1`
Root
     -----A
          -----`A1`
          -----A2
               -----A2.1                   
     -----C
          -----C1
到目前为止,我的解决方法如下

在从左侧jsTree中选择节点之后,我正在从所选节点到根节点构建xml。 并生成存储在cookie中的部分xml字符串。单击(“>>”)按钮,我正在从cookie读取部分xml字符串的值+清除部分xml字符串的cookie值。 案子办妥了。还有什么好办法可以办到案子吗

使用.get_path(node,id_模式)我获取从根节点到叶节点的路径(id&Name)

如果id_mode=true,则nodeIDs=Root.id、A.id、A2.id、A2.1.id

如果id_mode=false,则节点名称=根、A、A2、A2.1

是否可以将此路径设置为jsTree的右侧?

如果是,那么如何设置此路径? 如果路径已经存在,那么如何防止复制?否则将所选节点合并到右侧jsTree

----------------------------------------------------------------------------------------

使用.bind(“select_node.jstree”,函数(事件、数据),我们可以处理所选节点上的事件。单击+*图标*,如何处理事件

假设我左侧的jsTree只包含一个带有+图标的根节点,那么如何处理+图标上的onClick事件?请参见ink的答案

我想获取所选节点的子节点如何将子节点列表附加到所选节点?

如何使用jsTree函数实现[#2]和[#3]


在此问题上的任何帮助或指导都将不胜感激。

我可以在[+]点击事件上为您提供帮助。 您必须修改jquery.jstree.js(未压缩版本)。 打开它,用
toggle\u node:function(obj)
查找字符串(有一个选项卡符号,因此搜索
toggle\u node
),并在此处添加一行。编辑后,它必须是:

        toggle_node : function (obj) {
            obj = this._get_node(obj);
            this.__callback(obj); // these line must be added
            if(obj.hasClass("jstree-closed")) { return this.open_node(obj); }
            if(obj.hasClass("jstree-open")) { return this.close_node(obj);}             
        },
现在,您可以像往常一样为
toggle\u node
事件绑定回调。以下是示例:

    $("#your_jstree").bind("toggle_node.jstree", function (e, data) {
        is_opened = $(data.rslt).hasClass('jstree-open') ? false : true;
        node_id = $(data.rslt).attr('id');
        alert('node with id='+node_id+' is '+(is_opened ? 'opening' : 'closing')+' now.');          
    })

在节点打开或关闭之前进行这些回调调用。此外,在加载树时不会触发此事件,就像您使用
open\u node
事件一样。

感谢您的回复。[+]单击事件根据您的回答正常工作我解决了此问题,将在此处更新答案:)