ztree自定义图标(iconSkin,iconClose,iconOpen)

设计图:

先放上ztree的api:http://www.treejs.cn/v3/api.php

首先是ztree的初始化:

js文件的初始化

​
 var obj = [
        {
        name: '福建省',
        id:1,
            iconOpen:openurl,
            iconClose:closeurl,
        children: [
            {
                name: '福州市',
                iconOpen:openurl,//自定义的父类展开图标
                iconClose:closeurl,//自定义的父类关闭图标
                children: [{
                    name:'XX河',
                    iconSkin:"iconSkin"
                }]
            }, {
                name:'厦门市',
                iconOpen:openurl,
                iconClose:closeurl,
                children:[
                    {
                    name:'白马河',
                         iconSkin:"iconSkin"
                },
                    {
                        name:'琴亭湖',
                        iconSkin:"iconSkin"
                    }]
            }
        ]
    }, {
            name:'江苏省',
            id:2,
            iconOpen:openurl,
            iconClose:closeurl,
            children:[{
                name:'南京市'
            }]
        }, {
            name:'河南',
            id:3,
            iconOpen:openurl,
            iconClose:closeurl,
            children:[
                {
                    name:'南阳'
                }
            ]
        }, {
            name:'广东',
            id:4,
            iconOpen:openurl,
            iconClose:closeurl,
            children:[{
                name:'深圳'
            }
            ]
        },{
            name:'安徽',
            id:5,
            iconOpen:openurl,
            iconClose:closeurl,
            children:[{
                name:'合肥'
            }]
        }
    ]
    var setting={
        view:{
            dblClickExpand: false,
            showLine: false,
            fontCss: {color: 'rgb(102, 102, 102)',
               "font-size":14},
            selectedMulti: true,
            txtSelectedEnable: true,
            dblClickExpand: false
        },
        check:{
            enable:false,
            chkStyle:'checkbox'
        },
        callback: {
            onClick:onNodeClick
        }
    };

    $.fn.zTree.init($("#treeDemo"),setting,obj);//单击展开

    function onNodeClick (e,treeID,treeNode) {
        var zTree=$.fn.zTree.getZTreeObj("treeDemo");//单击展开
        zTree.expandNode(treeNode);
    }

​

注意我代码里面的两个单击展开父类,由于ztree没有自定义单击一次展开父类的设定(默认是双击展开),我们需要用特殊的方法,在callback里面调用函数来使它单击一次就展开父类。

参考下列博客:

https://blog.csdn.net/u014018281/article/details/77881402

https://blog.csdn.net/zsg88/article/details/71189289

html页面的容器:

 <ul id="treeDemo" class="ztree"></ul>

好了,接下来就是调换默认图标了,我上面的js代码中已经注释了iconOpen以及iconClose两个在obj里面的参数,它们两个对应的是图片各自的url(obj为定义的结点对象数组),对每一个结点都添加这个,有点麻烦,但管用。在子节点中用iconSkin参数,注意iconSkin对应的为css样式。所以我们必须添加css样式:
 

.ztree li span.button.iconSkin_ico_docu{
    background: url("../image/dizhihei.png") no-repeat;
}

在这里关键的是,iconSkin_ico_docu,虽然js中为iconSkin,但是ztree会自动为你添加后面的_ico_docu,所以一定要加,还有,前面的.ztree li span.button也要加上,不然会优先级不够(我猜),下面是我没加上的效果:

很惨的教训。

以下是我搞了一下午的效果:

还有一个问题就是前面的+_不知道怎么去掉,正在寻找解决的办法。

自定义 ztree 的响应数据,需要在后端返回 JSON 数据时,按照 ztree 的数据格式进行组装。具体来说,ztree 的节点数据格式如下: ``` { "id": "节点唯一标识符", "pId": "节点的父节点唯一标识符", "name": "节点名称", "isParent": "是否有子节点", "open": "节点是否默认展开", // 其他自定义属性 } ``` 如果需要自定义响应数据,可以在后端组装出符合上述格式的 JSON 数据,然后在前端使用 ztree 的 API 加载数据即可。具体的步骤如下: 1. 在后端组装出符合 ztree 格式的 JSON 数据; 2. 在前端使用 ztree 的 `async` 和 `data` 属性配置异步加载数据; 3. 在 `async` 属性中指定后端返回数据的 URL; 4. 在 `data` 属性中指定后端返回的 JSON 数据格式。 下面是一个示例代码: ``` // 后端返回的 JSON 数据格式 { "id": 1, "name": "根节点", "children": [ { "id": 2, "name": "子节点1" }, { "id": 3, "name": "子节点2" } ] } // 前端使用 ztree 加载数据 $(document).ready(function(){ $.fn.zTree.init($("#treeDemo"), { async: { enable: true, url: "/api/tree", autoParam: ["id=parentId"] }, data: { simpleData: { enable: true, idKey: "id", pIdKey: "parentId", rootPId: null } } }); }); ``` 在上述代码中,后端返回的 JSON 数据中,根节点的 `id` 为 `1`,子节点1的 `id` 为 `2`,子节点2的 `id` 为 `3`。在前端使用 ztree 加载数据时,将 `idKey` 指定为 `id`,`pIdKey` 指定为 `parentId`,这样 ztree 就能够正确地解析后端返回的 JSON 数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值