jquery实现自定义树形表格的方法【自定义树形结构table】


Posted in jQuery onJuly 12, 2019

本文实例讲述了jquery实现自定义树形表格的方法。分享给大家供大家参考,具体如下:

话不多说,直接上代码(本代码仅提供思路):

function createTables(data, t, p) {
    $("#datatable" + t + ' tbody').empty();
    var count = data.length;
    var html = '';
    if (count > 0) {
      for (var i = 0; i < count; i++) {
        var btn = '';
        if(data[i]._child && data[i]._child.length > 0){
          btn = '<i class="layui-icon mt-icon" style="cursor: pointer" data-tid="'+ data[i].category_id +'-'+ data[i].id +'-'+ t +'" data-pid="'+ data[i].category_id +'-'+ data[i].pid +'-'+ t +'"></i> ';
        }else{
          btn = '<i class="mt-icon" style="cursor: pointer" data-tid="'+ data[i].category_id +'-'+ data[i].id +'" data-pid="'+data[i].category_id +'-'+ data[i].pid+'"></i> ';
        }
        html += '<tr style="">' +
          '<td style="text-align: left">'+btn + data[i].name + '(' + data[i].title + ')' + '</td>' +
          '<td>' + (data[i].source_name ? data[i].source_name : '') + '</td>' +
          '<td>' + data[i].show_time + '</td>' +
          '<td>' + dataFormat(data[i].current_record, data[i].unit) + '</td>' +
          '<td>' + dataFormat(data[i].prev_record, data[i].unit) + '</td>' +
          '<td>' + dataFormat(data[i].last_record, data[i].unit) + '</td>' +
          '<td>' + dataFormat(data[i].budget, data[i].unit) + '</td>' +
          '<td>' + dataFormat(data[i].budget_rate, '%') + '</td>' +
          '<td>' + dataFormat(data[i].record_rate) + '</td>' +
          '<td>' + dataFormat(data[i].mom, '%') + '</td>' +
          '<td>' + dataFormat(data[i].yoy, '%') + '</td>' +
          '<td><i class="layui-icon" style="cursor: pointer" onclick="showHiddenArea(this,' + data[i].category_id + ',' + data[i].data_structure_id + ',' + data[i].time_unit + ',' + t + ');"></i></td> ' +
          '</tr>';
        if(data[i]._child && data[i]._child.length > 0){
          html = createNewTable(data[i]._child,html,1,t);
        }
      }
    } else {
      html = '<tr><td colspan="12" style="text-align: center"> 暂无数据 </td></tr>';
    }
    $("#datatable" + t + ' tbody').html(html); // 插入的表格
    initTreeAction(t); // 结构初始化
}
function createNewTable(data,html,y,t)
{
    var counts = data.length;
    var num = ++y;
    for (var i = 0; i < counts; i++) {
      var btn = '';
      var css = '';
      css = 'text-indent:'+ (num * 20) +'px;';
      if(data[i]._child && data[i]._child.length > 0){
        css = 'text-indent:'+ (num==2?20:(num-1) * 20) +'px;';
        btn = '<i class="layui-icon mt-icon" style="cursor: pointer" data-tid="'+ data[i].category_id +'-'+ data[i].id +'-'+ t +'" data-pid="'+data[i].category_id +'-'+ data[i].pid+'-'+ t +'" data-type="dir"></i> ';
      }else{
        btn = '<i class="mt-icon" style="cursor: pointer" data-tid="'+ data[i].category_id +'-'+ data[i].id +'-'+ t +'" data-pid="'+data[i].category_id +'-'+ data[i].pid +'-'+ t +'" data-type="file"></i> ';
      }
      html += '<tr style="display: none">' +
        '<td style="text-align: left; '+ css +'">'+ btn + data[i].name + '(' + data[i].title + ')' + '</td>' +
        '<td>' + (data[i].source_name ? data[i].source_name : '') + '</td>' +
        '<td>' + data[i].show_time + '</td>' +
        '<td>' + dataFormat(data[i].current_record, data[i].unit) + '</td>' +
        '<td>' + dataFormat(data[i].prev_record, data[i].unit) + '</td>' +
        '<td>' + dataFormat(data[i].last_record, data[i].unit) + '</td>' +
        '<td>' + dataFormat(data[i].budget, data[i].unit) + '</td>' +
        '<td>' + dataFormat(data[i].budget_rate, '%') + '</td>' +
        '<td>' + dataFormat(data[i].record_rate) + '</td>' +
        '<td>' + dataFormat(data[i].mom, '%') + '</td>' +
        '<td>' + dataFormat(data[i].yoy, '%') + '</td>' +
        '<td><i class="layui-icon" style="cursor: pointer" onclick="showHiddenArea(this,' + data[i].category_id + ',' + data[i].data_structure_id + ',' + data[i].time_unit + ',' + t + ');"></i></td> ' +
        '</tr>';
      if(data[i]._child && data[i]._child.length > 0){
        html = createNewTable(data[i]._child,html,num,t);
      }
    }
    return html;
}
function showLowData(obj)
{
    var mId = $(obj).attr('data-tid');
    var isOpen = $(obj).hasClass('open');
    if (isOpen) {
      $(obj).removeClass('open');
      if($(obj).hasClass('layui-icon')){
        $(obj).html('');
      }
    } else {
      $(obj).addClass('open');
      if($(obj).hasClass('layui-icon')){
        $(obj).html('');
      }
    }
    $(obj).parents('tbody').find('tr').each(function () {
      var mt = $(this).find('.mt-icon');
      var pid = mt.attr('data-pid');
      var Open = mt.hasClass('open');
      var type = mt.attr('data-type');
      if (mId == pid) {
        if (isOpen) {
          $(this).hide();
          if (type == 'dir' && Open == isOpen) {
            mt.trigger('click');
          }
        } else {
          $(this).show();
        }
      }
    });
}

希望本文所述对大家jQuery程序设计有所帮助。

jQuery 相关文章推荐
jQuery判断邮箱格式对错实例代码讲解
Apr 12 jQuery
使用jQuery,Angular实现登录界面验证码详解
Apr 27 jQuery
jQuery操作之效果详解
May 19 jQuery
使用jQuery.Pin垂直滚动时固定导航
May 24 jQuery
使用jQuery实现简单的tab框实例
Aug 22 jQuery
jQuery实现动态显示select下拉列表数据的方法
Feb 05 jQuery
jQuery实现标签子元素的添加和赋值方法
Feb 24 jQuery
jQuery AJAX 方法success()后台传来的4种数据详解
Aug 08 jQuery
jQuery序列化form表单数据为JSON对象的实现方法
Sep 20 jQuery
JQuery中DOM节点的操作与访问方法实例分析
Dec 23 jQuery
jQuery实现简单聊天室
Feb 08 jQuery
JQuery省市联动效果实现过程详解
May 08 jQuery
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
Jul 11 #jQuery
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
Jul 10 #jQuery
JavaScript实现的滚动公告特效【基于jQuery】
Jul 10 #jQuery
JavaScript前端页面搜索功能案例【基于jQuery】
Jul 10 #jQuery
jquery多级树形下拉菜单的实例代码
Jul 09 #jQuery
jQuery删除/清空指定元素的所有子节点实例代码
Jul 04 #jQuery
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
Jul 03 #jQuery
You might like
功能齐全的PHP发送邮件类代码附详细说明
2008/07/10 PHP
php 无限分类的树类代码
2009/12/03 PHP
aspx中利用js实现确认删除代码
2010/07/22 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
2013/04/22 Javascript
javascript递归回溯法解八皇后问题
2015/04/22 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
2015/05/18 Javascript
使用DNode实现php和nodejs之间通信的简单实例
2015/07/06 NodeJs
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
2015/11/02 Javascript
jQuery解析json数据实例分析
2015/11/24 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
JS实现禁止鼠标右键的功能
2016/10/15 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
JavaScript中双向数据绑定详解
2017/05/03 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
2017/07/12 Javascript
用node.js写一个jenkins发版脚本
2019/05/21 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
2020/12/04 Vue.js
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
win7安装python生成随机数代码分享
2013/12/27 Python
详解Python编程中包的概念与管理
2015/10/16 Python
Spring Cloud Feign高级应用实例详解
2019/12/10 Python
Pytorch实现的手写数字mnist识别功能完整示例
2019/12/13 Python
Python实现名片管理系统
2020/02/14 Python
基于Tensorflow一维卷积用法详解
2020/05/22 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
解决pytorch 模型复制的一些问题
2021/03/03 Python
Web页面中八种创建多列等高(等高列布局)的实现技术
2012/12/24 HTML / CSS
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
快速实现一个简单的canvas迷宫游戏的示例
2018/07/04 HTML / CSS
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
七夕情人节促销方案
2014/06/07 职场文书
KTV门卫岗位职责
2014/10/09 职场文书
JUnit5常用注解的使用
2021/07/02 Java/Android
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android