zTree的 用法

zTree入门:

zTree:常用于目录树节点的展示使用,先给出如下一整套的节点代码展示,请看:

var zTree, rMenu = $("#rMenu");// zTree实例 ||右键菜单父节点
var treeBtns = { //树结构右键菜单配置  依据 treeNode.level
    "0": [
        {
            name: '新增方案',
            event: 'addFaPop()'
        }
    ],
    "1": [
        {
            name: '预览方案',
            event: 'previewFz()'
        },
        {
            name: '新增分组',
            event: 'addFzPop()'
        },
        {
            name: '复制方案',
            event: 'copyFzPop()'
        },

        {
            name: '导入方案节点',
            event: 'importFz()'
        },
        {
            name: '导出方案节点',
            event: 'exportFz()'
        },
        {
            name: '导入数据中心配置文件',
            event: 'importJsonFz()'
        },
        {
            name: '导出方案主配置文件',
            event: 'exportMainConfig()'
        },
        {
            name: '删除方案',
            event: 'removeFz()'
        }
    ],
    "2": [
        {
            name: '新增图层分组',
            event: 'addTczPop()'
        },
        {
            name: '新增图层',
            event: 'addFwPop()'
        },
        {
            name: '复制分组',
            event: 'copyFzPop()'
        },
        {
            name: '删除分组',
            event: 'removeFz()'
        }
    ],
    "3": [
        {
            name: '删除图层',
            event: 'removeFz()'
        }
    ],
    "4": [
        {
            name: '新增图层',
            event: 'addFwPop()'
        },
        {
            name: '删除图层组',
            event: 'removeFz()'
        }
    ]
};
var pNodes,arrNode;//根节点
var zTreeObj = (function(){
    var handler = {};
    var setting = { //zTree 配置
        async: {
            enable: true, //是否启用异步
            url:GeoParmaData.queryTcfaxxTree,//接口地址
            type: 'post',//请求方式
            autoParam: {},//自动填充的参
            otherParam:{},//额外的参
            dataFilter: function(treeId,parentNode,responseData){
                var result = responseData.result;
                $.each(result,function(i,d){
                    if(d.jdlx == '3'){
                        d.iconSkin = 'icon-file';
                    }else{
                        d.iconSkin = 'icon-folder';
                    }
                });
                return result;
            }
        },
        data: {
            simpleData: {
                enable: true,
                idKey: 'kid',
                pIdKey: 'pid',
                rootPId: 0
            },
            key: {
                name: 'mc'
            }
        },
        view: {
            dblClickExpand: false, //是否双击展开
            showLine: false, //是否展示线
            showIcon:true //是否展示icon
        },
        check: {
            enable: false //是否启用多选
        },
        callback: {
            onRightClick: OnRightClick, //右键点击事件
            onClick: OnTreeClick, //左键点击事件
            beforeAsync: BeforeAsync
        }
    };


    handler.init = function(){ //树结构初始化
        pNodes = {kid:"0", mc: '图层管理方案',type:'root',open:true,isParent:true};//根结构
        $.fn.zTree.init($("#treeDemo"), setting, []);
        zTree = $.fn.zTree.getZTreeObj("treeDemo");
        //添加根节点
        arrNode = zTree.addNodes(null, 0, pNodes);
        refreshNode();
    };

    return handler.init();
}());

/**
 *  右键点击事件
 * **/
function OnRightClick(event, treeId, treeNode) {
    if (!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0) {

    } else if (treeNode && !treeNode.noR) {
        zTree.selectNode(treeNode);
        $("#"+treeNode.tId+"_a").click();
        if(treeNode.level < 3){
        	   showRMenu(treeNode.level, event.clientX, event.clientY);
        }else{
        	  showRMenu('2', event.clientX, event.clientY);
        }
      
    }
}
/**
 *  左键点击事件
 * **/
function OnTreeClick(event, treeId, treeNode){
    if(treeNode.level != 0){
        if(currLevel != treeNode.level){
            currLevel = treeNode.level;
            currTab = 0;
        }
        currKid = treeNode.kid;
        currBm = treeNode.bm;
        PageObj.setTabs(treeNode.jdlx);
        if(treeNode.children && treeNode.children.length > 0){
            zTree.expandNode(treeNode,true);
        }
        $tabBox.children().eq(currTab).click();
    }
}
/**
 *  展示右键点击后的菜单
 * **/
function showRMenu(type, x, y) {
    $("#rMenu ul").show();
    var aHtml = renderRightMenu(type);
    $("#rMenu ul").empty().append(aHtml.join(''));
    y += document.body.scrollTop;
    x += document.body.scrollLeft;
    rMenu.css({"top":y+"px", "left":x+"px", "visibility":"visible"});

    $("body").bind("mousedown", onBodyMouseDown);
}

/**
 *  渲染右侧点击后的菜单
 * **/
function renderRightMenu(type){
    var aHtml = [];
    $.each(treeBtns[type],function(i,d){
        aHtml.push('<li onclick="'+ d.event +'">'+ d.name +'</li>')
    });
    return aHtml;
}

/**
 *  隐藏右侧点击后的菜单
 * **/
function hideRMenu() {
    if (rMenu) rMenu.css({"visibility": "hidden"});
    $("body").unbind("mousedown", onBodyMouseDown);
}

/**
 *  点击body后的事件
 * **/
function onBodyMouseDown(event){
    if (!(event.target.id == "rMenu" || $(event.target).parents("#rMenu").length>0)) {
        rMenu.css({"visibility" : "hidden"});
    }
}
function BeforeAsync(treeId,treeNode){
    if(treeNode == undefined){
        return false;
    }
}

/**
 *  刷新根节点
 * **/
function refreshNode() {
    /*根据 treeId 获取 zTree 对象*/
    var type = "refresh";
    var silent = false;
    zTree.reAsyncChildNodes(arrNode[0], type, silent,function(){
        var node = zTree.getNodeByParam("kid",0);
        var child = node.children;
        if(child.length > 0){
            zTree.selectNode(child[0]);
            $("#"+child[0].tId+"_a").click();
        }

    });
}
function refreshCurrNode() {
    var type = 'refresh';
    var silent = false;
    var nodes = zTree.getSelectedNodes()[0];
    zTree.reAsyncChildNodes(arrNode[0], type, silent,function(){
        if(nKid != null){
            var node = zTree.getNodeByParam("kid",nKid);
            zTree.selectNode(node);
            $("#"+node.tId+"_a").click();
            nKid = null;
        }else{
            var node = zTree.getNodeByParam("kid", nodes.kid);
            zTree.selectNode(node);
            $("#"+node.tId+"_a").click();
        }
    });
}
/**
 *  刷新父节点
 * **/
function refreshParentNode(){
    var nodes = zTree.getSelectedNodes();
    var parentNode;
    var type = 'refresh';
    var silent = false;
    if(nodes.length > 0){
        parentNode = nodes[0].getParentNode();
        if(parentNode.type == 'root'){
            refreshNode();//刷新根节点
            return;
        }
    }
    zTree.reAsyncChildNodes(arrNode[0], type, silent,function(){
        var node = zTree.getNodeByParam("kid",parentNode.kid);
        zTree.selectNode(node);
        $("#"+node.tId+"_a").click();
    });
}

/**
 *  添加方案
 * **/
function addFaPop() {
    hideRMenu();
    PageObj.addFaPop();
}

疑难点解析: 

pNodes = {kid:"0", mc: '图层管理方案',type:'root',open:true,isParent:true};//根结构
$.fn.zTree.init($("#treeDemo"), setting, []);
zTree = $.fn.zTree.getZTreeObj("treeDemo");
//添加根节点
arrNode = zTree.addNodes(null, 0, pNodes);
zTree.selectNode(treeNode);----------------------选中节点;treeNode:点击事件中传入的参数,即选中的数据 
event.clientX----------------------------像素大小,即调整位置使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ZTree是一款基于jQuery的多功能树插件,可以用于创建动态交互的树形结构。MySQL是一种关系型数据库管理系统,可以通过执行SQL语句对数据库进行操作。 在引用中的代码中,是一个MySQL语句查询并返回JSON格式的数据,用于匹配ZTree的数据接口。该语句查询了表中的一些字段,并将结果转换成ZTree所需的数据格式。 在引用中的代码中,是一个删除方法,用于从数据库中删除一条记录。该方法通过执行SQL语句来删除指定ID的记录。 在引用中的代码中,是一个刷新资源树的函数,用于重新加载ZTree的数据并展示在页面上。该函数通过发送GET请求来获取数据,并将返回的数据初始化为ZTree的节点。然后选中指定的节点并展开其父级节点。 总结起来,ZTree是一个用于创建树形结构的jQuery插件,可以通过MySQL语句查询数据库的数据并返回JSON格式的结果,然后使用ZTree插件来展示和操作这些数据。同时,还可以通过一些方法和函数来对ZTree进行增删改查等操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [zTree mysql json](https://blog.csdn.net/weixin_31699079/article/details/113266752)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Ztree 局部刷新功能 (VS2022+Mysql 8.0.22)](https://blog.csdn.net/qq_35634771/article/details/128535058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值