双JsTree实现:如何?

时间:2012-04-29 19:44:05

标签: javascript jquery jstree

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

[左JsTrree] [>> ] [正确的JsTrree]

">>" :从左到右jsTree复制选定节点的按钮

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

  • 没有重复的节点。
  • 我不想复制所选节点的子节点
  • 根据右侧jsTree结构,只有左侧jsTree中的选定节点合并到右侧jsTree

如果用户从左侧jsTree中选择了任何节点,然后在按钮上(">>"),请单击我想将部分树从选定节点复制到根节点。

左jsTree如下"

 Root
     -----A
          -----A1
               -----A1.1
               -----A1.2
          -----A2
               -----`A2.1`
               -----A2.2

     -----B
          -----B1
          -----B2

     -----C
          -----C1
               -----C1.1
               -----C2.2

-------------------------------------------- ------------------------------------------
现在假设用户选择了节点A2.1然后在按钮(">>")之后点击以下部分树应该显示在右边的jsTree

[#1]右jsTree:

 Root
     -----A
          -----A2
               -----`A2.1` 

现在,在右边的jsTree中添加了根节点,只有选定的节点才能合并到右边的jsTree。

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

现在假设用户选择了C1然后只有C1应该合并到右边的jsTree。

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

Root
     -----A
          -----A2
               -----A2.1 
     -----C
          -----`C1`

假设用户选择A1,则A1应合并到适当的位置
[#3]从左侧jsTree添加A1后的右侧jsTree结构:

Root
     -----A
          -----`A1`
          -----A2
               -----A2.1                   
     -----C
          -----C1

到目前为止我的解决方法如下

从左侧jsTree选择节点后,我正在从选定节点到根节点构建xml。 并生成存储在cookie中的partial_xml_string。点击(">>")按钮我正在从cookie +清除partial_xml_string的cookie值读取partial_xml_string的值。 [#1]案件做得很好。有没有其他好办法来实现[#1]案例?

使用.get_path(node,id_mode)我从root到leaf节点获取路径(ID& Name)

如果id_mode = true,则节点 ID = Root.id,A.id,A2.id,A2.1.id

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

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

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

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

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

考虑我的左边jsTree只包含一个带有+图标的Root节点,然后如何在+ icon上处理onClick事件? 见墨水答案

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

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

对此事项的任何帮助或指导将不胜感激。

1 个答案:

答案 0 :(得分:0)

我不知道jsTree的实现,但我认为你不需要XML。您可以创建一个递归函数来转到子树的根,然后返回添加每个节点以防它不存在。在伪代码中:

function transport(node, tree)
{
    var parent = node.getParent();
    var transported_node = null;

    if(parent != null)
        parent = transport(parent, tree);
    else
       parent = tree;

    transported_node = parent.getChild(node);

    if(transported_node == null)
       transported_node = parent.AddChild(node);

    return transported_node;
}