JStree学习

把我在项目中用到的一些jstree技术拿出来分享一下
先放一张效果图:

这里写图片描述


1.节点前加减号的更换

把css文件下32px.png这张图改一下就行

2. 父子节点前的图标不一样

在代码初始化中设置

 $("#user-tree").jstree({
            "core" : {
                "themes": {
                    "responsive": false
                },
                // so that create works
                "check_callback": true,
                'data': data
            },
            "types" : {
                "default" : {
                    "icon" : "glyphicon glyphicon-folder-close",
                    draggable : false
                },
                "file" : {
                    "icon" : "glyphicon glyphicon-folder-close"
                },
                "online" : {
                    "icon" : "glyphicon glyphicon-user text-primary "
                },
                "offline" : {
                    "icon" : "glyphicon glyphicon-user text-default"
                }
            },
            "plugins" : ["types","wholerow",'dnd']
        });

如代码中显示,一共4个不同的types,也就是4个不同的图标,想让节点图标是其中一个就设置节点的type属性为其中一个就行。就像id:"user1",text:"系统管理员",parent:"dep1",type:"online"这个节点一样。

3. 当鼠标移到用户节点的时候显示下面3个图标

这个是客户要求的,当时也是想了好久。来,直接看代码

.on('hover_node.jstree', function (e, data) {
            //监听鼠标移上事件
            var node=data.node;
            var a_attr=node.a_attr;
            var id=node.id;
            //判断是否是用户节点
            if(id.indexOf("user")>=0)
            {
                var doc=document.getElementById(id);
                $("#"+id+" .jstree-wholerow").css("height","48px");
                if(lastNodeId=="")
                {
                    lastNodeHtml=doc.innerHTML.replace("jstree-wholerow-hovered","");
                    lastNodeId=id;

                }
                else
                {
                    var last=document.getElementById(lastNodeId);
                    if(last!=null)
                        last.innerHTML=lastNodeHtml;
                    lastNodeHtml=doc.innerHTML.replace("jstree-wholerow-hovered","");
                    lastNodeId=id;

                }
                id=id.replace("user","");
                //添加图标
                doc.innerHTML+='<div style="padding-left: 50px;">' +
                    '<a class="glyphicon glyphicon-pencil" onclick="show(\''+id+'\')"></a>' +
                    '<a class="glyphicon glyphicon-signal" ></a>' +
                    '<a class="glyphicon glyphicon-flag"  onclick="show(\''+id+'\')"></a>' +
                    '</div>';
            }
        })

4. 对节点的添加,更新,删除操作

看代码:
HTML

  <div class="row">
            <div id="user-tree" class="tree-demo"></div>
        </div>
        <div class="row">
            <div class="clearfix">
                <button type="button" class="btn btn-success add">
                   添加
                </button>
                <button type="button" class="btn btn-warning rename">
                    重命名
                </button>
                <button type="button" class="btn btn-danger delete">
                    删除
                </button>
            </div>
        </div>

JS

//监听重命名时间
.on("rename_node.jstree",function(event,data) {
            renameDepartment(event, data);
        });

 /**
         * 添加
         */
        $(".clearfix .add").on('click', function (e) {
            var ref = $('#user-tree').jstree(true);
            var sel = ref.get_selected();
                if(!sel.length) { return false; }
                sel = sel[0];
                sel = ref.create_node(sel, {"type":"file"});
                if(sel) {
                    ref.edit(sel);
                }
        });
        /**
         * 更新
         */
        $(".clearfix .rename").on('click', function (e) {
            var ref = $('#user-tree').jstree(true);
            var sel = ref.get_selected();
            if(!sel.length) { return false; }
            sel = sel[0];
            ref.edit(sel);
        });
        /**
         * 删除
         */
        $(".clearfix .delete").on('click', function (e) {
            var ref = $('#user-tree').jstree(true);
            var sel = ref.get_selected();
            if(!sel.length) { return false; }
            var r=confirm("确定删除该部门?")
            if (r==true)
            {
                ref.delete_node(sel);
            }

        });
        /**
         * 更新
         */
        function renameDepartment(event,data)
        {
            //添加逻辑,存入数据库
            //注:1.添加节点之后还会触发更新事件
            //   2.添加之后需要刷新jstree
            // $('#user-tree').jstree("refresh");
        }

源代码下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder_Qiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值