Jquery Ztree异步加载树

摘要:
childNodes)返回null;对于{childNodes[i].name=childNodes[i].name.replace;}returnchildNodes;}//回调函数functionbeforeClick{//如果(!

更多JS实战记录,请前往:https://www.yuque.com/smallwhy/yyvuqy

1. 下载jquery的JS文件/ztree的CSS文件和JS文件

2. 目录结构

Jquery Ztree异步加载树第1张

3. asyncTree.html


<head>

    <!-- 引入文件 -->

    <link rel="stylesheet" href="http://t.zoukankan.com/resource/css/zTreeStyle.css" />

    <script type="text/javascript" src="http://t.zoukankan.com/resource/js/jquery-1.10.2.js"></script>
    <script type="text/javascript" src="http://t.zoukankan.com/resource/js/jquery.ztree.core.js"></script>
</head>
<body>
   <body>
    // treeDOM元素
    <div class="content_wrap">
        <div class="zTreeDemoBackground left">
            <ul   class="ztree"></ul>
        </div>
    </div>
    // tree JS
   <script type="text/javascript">
        // 配置
        var setting = {
            view: {
                selectedMulti: false
            },
            async: { // 属性配置
                enable: true, 
                url:"./resource/json/getNodes.json", 
                autoParam:["id", "name=name"], 
                // otherParam:{"otherParam":"zTreeAsyncTest"}, 
                type: 'get',
                dataFilter: filter
            },
            callback: { // 回调函数配置
                beforeClick: beforeClick, 
                beforeAsync: beforeAsync
            }
        };
        // 数据处理回调函数
        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;
        }
        // 节点点击前回调函数 (treeId -- treeId-对应zTree容器元素的id;;; treeNode -- 点击节点JSON对象)
        function beforeClick(treeId, treeNode) { // 选中节点
            if (!treeNode.isParent) {
                return false;
            } else {
                return true;
            }
        }
        // 异步加载前回调函数(treeId-对应zTree容器元素的id;;treeNode-进行异步加载的父节点 JSON 数据对象)
        function beforeAsync(treeId, treeNode) {
            return true;
        }
         
        $(document).ready(function() {
            // 初始化树
            $.fn.zTree.init($("#treeDemo"), setting);
        });
    </script>
</body>

预览

Jquery Ztree异步加载树第2张 =》 Jquery Ztree异步加载树第3张

async 属性解析:

  • enable: true — 设置 zTree 是否开启异步加载模式
  • url:"./resource/json/getNodes.json" — Ajax 获取数据的 URL 地址
  • autoParam:["id", "name=name"] — 异步加载时(初始化时不需要)需要自动提交父节点属性的参数
  • otherParam:{"otherParam":"zTreeAsyncTest"} — Ajax 请求提交的静态参数(初始化请求、异步加载请求时都会有此参数)
  • type: 'get' — 获取数据的方法
  • dataFilter: filter — 用于对 Ajax 返回数据进行预处理的函数

callback属性解析:

  • beforeClick: 方法名 - 用于捕获单击节点之前的事件回调函数,并且根据返回值确定是否允许单击操作

  • beforeAsync: 方法名 - 用于捕获异步加载之前的事件回调函数,zTree 根据返回值确定是否允许进行异步加载

  • onAsyncSuccess: 方法名 — 用于捕获异步加载正常结束的事件回调函数

  • onClick: 方法名 — 用于捕获节点被点击的事件回调函数

4: 额外功能-----默认选中第一项 -- 此处可省略

修改asyncTree.html

// callback中添加属性

onAsyncSuccess: onAsyncSuccess, // 用于捕获异步加载正常结束的事件回调函数

onClick: function (event, treeId, treeNode) { // 用于捕获节点被点击的事件回调函数  

    beforeClick(treeId, treeNode)

}
// 添加加载成功后的回调函数
function onAsyncSuccess(event, treeId, treeNode, msg) {
            // 默认选中个第一项操作:第三步
            var msgJson = JSON.parse(msg)
            var firstMsgItem = null;
            for(var i=0; i<msgJson.length; i++){
                var item = msgJson[i];
                if(!item.isParent){
                    firstMsgItem = item;
                    break;
                }
            }
            if(firstMsgItem){
                var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
                var node = treeObj.getNodeByParam('id', firstMsgItem.id);
                treeObj.selectNode(node);
                treeObj.setting.callback.onClick(null, treeObj.setting.treeId, node);//调用事件
            }
        }

预览

Jquery Ztree异步加载树第4张 =》 Jquery Ztree异步加载树第5张

免责声明:文章转载自《Jquery Ztree异步加载树》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Nodejs与ES6系列1:变量声明AngularJS学习笔记(一) 关于MVVM和双向绑定下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

jQuery插件的使用和写法

jQuery的插件主要分成3种类型。   1.封装对象方法的插件    这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进行操作,是最常见的一种插件。 2.封装全局函数的插件    可以将独立的函数加到jQuery命名空间之下。例如jQuery.noConflict()方法、常用的jQuery.ajax()方法以及去除首位空格的jQu...

jQuery boxy弹出层对话框插件中文演示及讲解

一、前言jQuery 下的boxy可以说是一个非常实用的插件,尤其在SNS社区型的大型网站上经常见到风格类似的效果,例如开心网,人人网,facebook网站。这个提示对话框插件应用非常广泛,吃透这个jQuery插件,在灵活运用Ajax技术的话,会使网站无论技术还是体验都会有很大的提升的。具体来讲此jQuery插件包括:提示、确认,拖拉、改变大小、Ajax...

jquery 弹窗插件 layer

官网:http://sentsin.com/jquery/layer/ 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2 <html> 3 <head> 4...

jQuery实现仿Excel表格编辑功能 Handsontable

前言: Handsontable是一个相当给力的 jQuery插件,它实现了 HTML 页面中的表格编辑功能,并且是仿 Excel 的编辑效果。 在 Excel 中可进行的操作,你几乎都可以在网页中做到,如拖动复制、Ctrl+C 、Ctrl+V 等等。 另外在浏览器支持方面,它支持以下的浏览器 IE7+, FF, Chrome, Safari, Opera...

JQuery点击行tr实现checkBox选中与未选中切换

点击table中的行时checkbox选中,再次点击取消。如何将tr作为模板插入的话可以在每一行tr注册点击事件 <tr onclick=" $($(this).children()[0]).children()[0].checked = ! $($(this).children()[0]).children()[0].checked" >...

jQuery WeUI 地址选择器的使用

界面: <div class="weui-cell"> <div class="weui-cell__hd"><label class="weui-label">所在地:</label></div> &l...