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也要加上,不然会优先级不够(我猜),下面是我没加上的效果:

很惨的教训。

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

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

posted @ 2019-08-01 16:59  caxi  阅读(1870)  评论(0编辑  收藏  举报