4

我是 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,然后在 button("> >") 单击下面的部分树应显示在右侧 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。并将生成的 partial_xml_string 存储到 cookie 中。OnClick of (">>") 按钮我正在从 cookie 中读取 partial_xml_string 的值 + 清除 partial_xml_string 的 cookie 值。[#1] 案例处理得当。还有其他实现 [#1] 案例的好方法吗?

使用 .get_path ( node , id_mode ) 我得到从根到叶节点的路径(ID & Name)

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

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

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

如果是,那么如何设置此路径? 如果路径已经存在,那么如何防止复制?否则将选定的节点合并到正确的 jsTree。

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

使用 .bind("select_node.jstree", function (event, data) 我们可以处理选定节点上的事件。如何处理+ * icon * 的 onClick 事件?

考虑我的左侧 jsTree 仅包含一个带有 + 图标的 Root 节点,那么如何处理 + 图标上的 onClick 事件?看墨水的答案

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

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

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

4

1 回答 1

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;
}
于 2012-05-08T19:18:34.593 回答