侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

js树的使用ztree

2024-05-07 星期二 / 0 评论 / 0 点赞 / 56 阅读 / 40870 字

<!--jquery.treeview下载https://github.com/jzaefferer/jquery-treeview,然后将所需要的文件引入html中,第一个简单的树完成了--> <l

<!--jquery.treeview下载https://github.com/jzaefferer/jquery-treeview,然后将所需要的文件引入html中,第一个简单的树完成了-->
<link rel="stylesheet" href="jquery.treeview.css" />
<script src="jquery.js" type="text/javascript"></script>
<script src="jquery.cookie.js" type="text/javascript"></script>
<script src="jquery.treeview.js" type="text/javascript"></script>
<ul id="tree" class="filetree">
    <li class="filetree"><span class="folder">1</span>
        <ul>
            <li ><span class="folder">11</span></li>
            <li ><span class="folder">22</span>
                <ul>
                    <li >
                        <span class="folder">222</span>
                    </li>
                    <li >
                        <span class="folder">333</span>
                    </li>
                </ul>
            </li>
            <li ><span class="folder">1</span>
                <ul>
                    <li ><span class="folder">aa</span></li>
                    <li ><span class="folder">bb</span></li>
                </ul>
            </li>
        </ul>
    </li>
        <li ><span class="folder">2</span></li>
        <li ><span class="folder">3</span></li>
</ul>
<script type="text/javascript">
    $("#tree").treeview();

</script>

 

 

 


<!--ztree的第一个例子,来自原网站,首先下载ztree:https://github.com/zTree/zTree_v3,修改引入js,css的路径定义zTreeNodes,setting,调用初始化方法-->
<!DOCTYPE html>
<HTML>

<HEAD>
    <TITLE> ZTREE DEMO </TITLE>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <link rel="stylesheet" href="css/zTreeStyle/zTreeStyle.css" type="text/css">
    <script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
    <script type="text/javascript" src="js/jquery.ztree.core.js"></script>
    <!--
  <script type="text/javascript" src="jquery.ztree.excheck.js"></script>
  <script type="text/javascript" src="jquery.ztree.exedit.js"></script>
-->
    <SCRIPT type="text/javascript">
    var zTreeObj,
        setting = {
            view: {
                selectedMulti: false
            }
        },
        zTreeNodes = [{
            "name": "网站导航",
            open: false,
            children: [{
                "name": "google",
                "url": "http://g.cn",
                "target": "_blank"
            }, {
                "name": "baidu",
                "url": "http://baidu.com",
                "target": "_blank"
            }, {
                "name": "sina",
                "url": "http://www.sina.com.cn",
                "target": "_blank"
            }]
        }];

    $(document).ready(function() {
        zTreeObj = $.fn.zTree.init($("#tree"), setting, zTreeNodes);

    });
    </SCRIPT>
</HEAD>

<BODY>
    <ul id="tree" class="ztree" style="width:230px; overflow:auto;"></ul>
</BODY>

</HTML>

 

springmvc controller层

 

@RequestMapping("/treeview")

         @ResponseBody

         public void treeViewText(HttpServletResponse response, HttpServletRequest request) {

                   List<Person> list = new ArrayList<Person>();

                   for (int i = 0; i < 4; i++) {

                            Person person = new Person();

                            person.setId(i);

                            if (i == 0) {

                                     person.setName("菜单");

                                     person.setParent(true);

                            } else if(i==1){

                                     person.setpId(0);

                                     person.setName("菜单1");

                                     person.setParent(true);

                                    

                            }else if(i==2){

                                     person.setpId(1);

                                     person.setName("2");

                                     person.setParent(true);

                                    

                            }else if(i==3){

                                    

                                     person.setpId(2);

                                     person.setName("3");

                                     person.setParent(false);

                                    

                            }

 

                            list.add(person);

 

                   }

 

                   String json = com.alibaba.fastjson.JSONObject.toJSON(list).toString();

                   try {

                            response.setCharacterEncoding("UTF-8");

                            response.setContentType("application/json;charset=UTF-8");

                            PrintWriter out = response.getWriter();

                            out.write(json);

                            out.flush();

                            out.close();

                   } catch (IOException e) {

                            e.printStackTrace();

                   }

 

         }

 

 

前端简单异步调用。

<!DOCTYPE html>

<HTML>

 

<HEAD>

    <TITLE> ZTREE DEMO </TITLE>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">

    <link rel="stylesheet" href="/testP/css/zTreeStyle/zTreeStyle.css" type="text/css">

    <script type="text/javascript" src="/testP/js/jquery.js"></script>

    <script type="text/javascript" src="/testP/js/jquery.ztree.core.js"></script>

 

    <SCRIPT type="text/javascript">

    var setting = {

            view: {

                //dblClickExpand: false,

                expandSpeed: 100 //设置树展开的动画速度

            },

            //获取json数据

            async: {

                enable: true,

                url: "/testP/treeview.do", // Ajax 获取数据的 URL 地址 

                autoParam: ["id"] //ajax提交的时候,传的是id值

            },

            data: { // 必须使用data 

                simpleData: {

                    enable: true,

                    idKey: "id", // id编号命名  

                    pIdKey: "pId", // 父id编号命名   

                    rootPId: 0

                }

            },

            // 回调函数 

            //?????treeId

            callback: {

                onClick: function(event, treeId, treeNode, clickFlag) {

                    if (true) {

                        alert(" 节点id是:" + treeNode.id + ", 节点文本是:" + treeNode.name);

                    }

                },

                

               

                //捕获异步加载出现异常错误的事件回调函数 和 成功的回调函数 

                onAsyncSuccess: function(event, treeId, treeNode, msg) {}

            }

        };

 

        // 过滤函数 

        function filter(treeId, parentNode, childNodes) {

            if (!childNodes)

                return null;

            for (var i = 0, l = childNodes.length; i < l; i++) {

                childNodes[i].name = childNodes[i].name.replace(//.n/g, '.');

            }

            return childNodes;

        }

 

        //  

        $(document).ready(function() {

            $.fn.zTree.init($("#tree"), setting);

        });

    </SCRIPT>

</HEAD>

 

<BODY>

    <ul id="tree" class="ztree" style="width:230px; overflow:auto;"></ul>

</BODY>

 

</HTML>

 

------------------------ztree增删改实例------------------------------------------------

<!DOCTYPE html>
<HTML>

<HEAD>
    <TITLE> ZTREE DEMO - beforeEditName / beforeRemove / onRemove / beforeRename / onRename</TITLE>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <link rel="stylesheet" href="css/demo.css" type="text/css">
    <link rel="stylesheet" href="css/zTreeStyle/zTreeStyle.css" type="text/css">
    <script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
    <script type="text/javascript" src="js/jquery.ztree.core.js"></script>
    <script type="text/javascript" src="js/jquery.ztree.excheck.js"></script>
    <script type="text/javascript" src="js/jquery.ztree.exedit.js"></script>
    <SCRIPT type="text/javascript">
    <!--
    var setting = {
        view: {
            addHoverDom: addHoverDom,
            removeHoverDom: removeHoverDom,
            selectedMulti: false
        },
        edit: {

            enable: true,

            //给节点额外增加属性来控制“重命名”、“删除”图标的显示或隐藏
            showRenameBtn: showRenameBtn,
            showRemoveBtn: showRemoveBtn
        },
        data: {
            simpleData: {
                enable: true
            }
        },
        callback: {
            beforeDrag: beforeDrag,
            beforeEditName: beforeEditName,
            beforeRemove: beforeRemove,
            beforeRename: beforeRename,
            onRemove: onRemove,
            onRename: onRename
        }
    };


    var zNodes = [

        //给节点额外增加属性来控制“重命名”、“删除”图标的显示或隐藏
        {
            id: 1,
            pId: 0,
            name: "父节点 1",
            open: true,
            noRemoveBtn: true,
            noEditBtn: true
        }, {
            id: 11,
            pId: 1,
            name: "叶子节点 1-1",
            noRemoveBtn: true,
            noEditBtn: true
        }, {
            id: 12,
            pId: 1,
            name: "叶子节点 1-2"
        }, {
            id: 13,
            pId: 1,
            name: "叶子节点 1-3"
        }, {
            id: 2,
            pId: 0,
            name: "父节点 2",
            open: true
        }, {
            id: 21,
            pId: 2,
            name: "叶子节点 2-1"
        }, {
            id: 22,
            pId: 2,
            name: "叶子节点 2-2"
        }, {
            id: 23,
            pId: 2,
            name: "叶子节点 2-3"
        }, {
            id: 3,
            pId: 0,
            name: "父节点 3",
            open: true
        }, {
            id: 31,
            pId: 3,
            name: "叶子节点 3-1"
        }, {
            id: 32,
            pId: 3,
            name: "叶子节点 3-2"
        }, {
            id: 33,
            pId: 3,
            name: "叶子节点 3-3"
        }
    ];
    var log, className = "dark";

    function beforeDrag(treeId, treeNodes) {
        return false;
    }

    function beforeEditName(treeId, treeNode) {
        className = (className === "dark" ? "" : "dark");
        showLog("[ " + getTime() + " beforeEditName ]&nbsp;&nbsp;&nbsp;&nbsp; " + treeNode.name);
        var zTree = $.fn.zTree.getZTreeObj("treeDemo");
        zTree.selectNode(treeNode);
        return confirm("进入节点 -- " + treeNode.name + " 的编辑状态吗?");
    }

    function beforeRemove(treeId, treeNode) {
        className = (className === "dark" ? "" : "dark");
        showLog("[ " + getTime() + " beforeRemove ]&nbsp;&nbsp;&nbsp;&nbsp; " + treeNode.name);
        var zTree = $.fn.zTree.getZTreeObj("treeDemo");
        zTree.selectNode(treeNode);
        return confirm("确认删除 节点 -- " + treeNode.name + " 吗?");
    }

    function onRemove(e, treeId, treeNode) {
        showLog("[ " + getTime() + " onRemove ]&nbsp;&nbsp;&nbsp;&nbsp; " + treeNode.name);
    }

    function beforeRename(treeId, treeNode, newName) {
        className = (className === "dark" ? "" : "dark");
        showLog("[ " + getTime() + " beforeRename ]&nbsp;&nbsp;&nbsp;&nbsp; " + treeNode.name);
        if (newName.length == 0) {
            alert("节点名称不能为空.");
            var zTree = $.fn.zTree.getZTreeObj("treeDemo");
            setTimeout(function() {
                zTree.editName(treeNode)
            }, 10);
            return false;
        }
        return true;
    }

    function onRename(e, treeId, treeNode) {
        showLog("[ " + getTime() + " onRename ]&nbsp;&nbsp;&nbsp;&nbsp; " + treeNode.name);
    }

    function showLog(str) {
        if (!log) log = $("#log");
        log.append("<li class='" + className + "'>" + str + "</li>");
        if (log.children("li").length > 8) {
            log.get(0).removeChild(log.children("li")[0]);
        }
    }

    function getTime() {
        var now = new Date(),
            h = now.getHours(),
            m = now.getMinutes(),
            s = now.getSeconds(),
            ms = now.getMilliseconds();
        return (h + ":" + m + ":" + s + " " + ms);
    }


    //是否显示编辑按钮
    function showRenameBtn(treeId, treeNode) {
        //获取节点所配置的noEditBtn属性值
        if (treeNode.noEditBtn != undefined && treeNode.noEditBtn) {
            return false;
        } else {
            return true;
        }
    }
    //是否显示删除按钮
    function showRemoveBtn(treeId, treeNode) {
        //获取节点所配置的noRemoveBtn属性值
        if (treeNode.noRemoveBtn != undefined && treeNode.noRemoveBtn) {
            return false;
        } else {
            return true;
        }
    }


    var newCount = 1;

    function addHoverDom(treeId, treeNode) {

        //在addHoverDom中判断第0级的节点不要显示“新增”按钮
        if (treeNode.level === 0) {
            return false;

        } else {

            //给节点添加"新增"按钮
            var sObj = $("#" + treeNode.tId + "_span");
            if (treeNode.editNameFlag || $("#addBtn_" + treeNode.id).length > 0) return;
            var addStr = "<span class='button add' id='addBtn_" + treeNode.id + "' title='add node' onfocus='this.blur();'></span>";
            sObj.after(addStr);
            var btn = $("#addBtn_" + treeNode.id);
            if (btn) btn.bind("click", function() {
                var zTree = $.fn.zTree.getZTreeObj("treeDemo");
                zTree.addNodes(treeNode, {
                    id: (100 + newCount),
                    pId: treeNode.id,
                    name: "new node" + (newCount++)
                });
                return false;
            });
        }

    };

    function removeHoverDom(treeId, treeNode) {
        $("#addBtn_" + treeNode.id).unbind().remove();
    };

    function selectAll() {
        var zTree = $.fn.zTree.getZTreeObj("treeDemo");
        zTree.setting.edit.editNameSelectAll = $("#selectAll").attr("checked");
    }

    $(document).ready(function() {
        $.fn.zTree.init($("#treeDemo"), setting, zNodes);
        $("#selectAll").bind("click", selectAll);
    });
    //-->
    </SCRIPT>
    <style type="text/css">
    .ztree li span.button.add {
        margin-left: 2px;
        margin-right: -1px;
        background-position: -144px 0;
        vertical-align: top;
        *vertical-align: middle
    }
    </style>
</HEAD>

<BODY>
    <h1>高级 增 / 删 / 改 节点</h1>
    <h6>[ 文件路径: exedit/edit_super.html ]</h6>
    <div class="content_wrap">
        <div class="zTreeDemoBackground left">
            <ul id="treeDemo" class="ztree"></ul>
        </div>
    </div>
</BODY>

</HTML>

 

 

 

 

广告 广告

评论区