jstree contextmenu CLONE(作为复制,粘贴和重命名)在一个操作中

时间:2011-12-22 19:20:25

标签: contextmenu clone rename copy-paste jstree

我正在研究jstree的contextmenu,并且在右键菜单中显然需要一个克隆功能,它实际上是模拟复制,粘贴和重命名,这样一旦用户右键单击一个项目然后点击克隆,一个节点被复制(复制并粘贴在树中,并重命名为高亮显示,以便用户可以在那里重命名。

我在下面尝试了自定义克隆菜单项的代码,但它不起作用

cloneItem:{//“克隆”菜单项
            标签:“克隆”,
            行动:功能(obj)
            {
                    this.copy(OBJ);
                        this.paste(OBJ);
                    }
        }

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

经过研究,我弄清楚了如何实现这个克隆,关键是要做粘贴在复制节点的父节点上。这是代码。

cloneItem: { 
        label: "Clone",             
        action: function (obj) 
        {
            var currentId = this._get_node(obj).attr("id");
            var parentId = this._get_node(obj)[0].firstChild.parentElement.parentNode.parentElement.id;
            $("#TreeDiv").jstree("copy"); 
            $("#TreeDiv").jstree("select_node","#"+parentId);
            $("#TreeDiv").jstree("paste"); 
            $("#TreeDiv").jstree("deselect_node","#"+parentId)
            $("#TreeDiv").jstree("deselect_node", "#"+currentId)
            $("#TreeDiv").jstree("select_node","#copy_"+currentId);
            $("#TreeDiv").jstree("rename");   
        } 

    },

执行此操作的步骤是

  • 使用.jstree(“copy”)复制当前项目;
  • 使用.jstree选择复制项目的父节点(“select_node”,“#”+ parentId);
  • 使用.jstree(“粘贴”)粘贴复制的项目(将其复制到所选项目,表示父项);
  • 现在使用.jstree(“deselect_node”,“#”+ parentId)和.jstree(“deselect_node”,“#”+ currentId)取消选择父元素和复制元素
  • 在重命名之前选择复制的节点,复制的项目的ID为copy_,因此请执行.jstree(“select_node”,“#copy _”+ currentId);
  • ,最后一步是.jstree(“rename”);

我希望它能帮助那些需要在jstree中克隆的人。