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

本文实例讲述了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表格(table)操作技巧汇总》、《jQuery操作xml技巧总结》、《jQuery form操作技巧汇总》、《jQuery常用插件及用法总结》、《jQuery扩展技巧总结》及《jquery选择器用法总结》

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

(0)

相关推荐

  • json+jQuery实现的无限级树形菜单效果代码

    本文实例讲述了json+jQuery实现的无限级树形菜单效果代码.分享给大家供大家参考.具体如下: 这里演示json树形菜单,JS无级树树形菜单,引入了jQuery插件,使用递归实现获取无级树数据并生成DOM结构,可以在JSON数据里 扩展无限级 看结构就明白. 先来看看运行效果截图: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-json-tree-style-menu-codes/ 具体代码如下: <!DOCTYPE html PUBLIC &quo

  • jquery树形菜单效果的简单实例

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

  • jquery ztree实现下拉树形框使用到了json数据

    公司最近的项目需要用到树形下拉框,在网上找了挺多源码,最后还是采用了zTree来实现,因为代码的移植性比较高,而且数据的获取比较容易.废话不多说,直接上代码. index.jsp 复制代码 代码如下: <%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c&q

  • jQuery树形控件zTree使用小结

    0 zTree简介 树形控件的使用是应用开发过程中必不可少的.zTree 是一个依靠 jQuery 实现的多功能 "树插件".优异的性能.灵活的配置.多种功能的组合是 zTree 最大优点. 0.0 zTree的特点  •最新版的zTree将核心代码按照功能进行了分割,不需要的代码可以不用加载,如普通使用只需要加载核心的jquery.ztree.core-3.5.js,需要使用勾选功能加载jquery.ztree.excheck-3.5.min.js,需要使用编辑功能加载jquery.

  • jQuery ztree实现动态树形多选菜单

    我用到的版本ztree core v3.5.24,需要引入的js,css,jquery.js,jquery.ztree.core.js,jquery.ztree.excheck.js(多选框可选),zTreeStyle.css. 需要注意的指向父节点的pId,我开始写的是pid一开始没注意,默认的是pId,当然可以pIdKey指定自定义的(未测).还有如果图片没显示肯定是没引入img图片,记得写好路径. 1.先介绍初始化加载ztree jsp <div > <ul id="tr

  • jquery实现树形菜单完整代码

    本实例实现了树形的动态菜单,兼容IE8,火狐,Chrome等浏览器.使用了jQuery的toggle() 方法.效果和代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/199

  • 推荐8款jQuery轻量级树形Tree插件

    由于其拥有庞大,实用的插件库,使得jQuery变得越来越流行.今天将介绍一些最好的jQuery树形视图插件,具有扩展和可折叠的树视图.这些都是轻量级的,灵活的jQuery插件,它将一个无序列表转换为可展开和折叠的树. Treeview – Expandable and Collapsible Tree jQuery Plugin jQuery Treeview是一个轻巧和灵活的jQuery插件.它将一个无序列表转换成一个可扩展和可折叠的树,非常适合导航增强. 示例 jsTree – jQuery

  • jQuery EasyUI结合zTree树形结构制作web页面

    JQuery EasyUI 结合 zTree树形结构制作web页面.easyui用起来比较简单,很好的封装了jquery的部分功能,使用起来更加方便,但是从1.2.3版本以后,商业用途是需要付费的,zTree是国内的大牛们搞的一个jquery树形tree插件,感觉很好用,很强大,而且完全免费,API等做的也非常不错.推荐 easyui 是一个基于 jQuery 的框架,集成了各种用户界面插件. easyui 提供建立现代化的具有交互性的 javascript 应用的必要的功能. 使用 easyu

  • jQuery 树形结构的选择器

    DOM结构其实也是一种树形结构,jQuery提供的树形选择器可以用来选择DOM Tree里的节点.这些树形选择器的方法包括:children(), parent(), parents(), next(), prev(), siblings(). 选择某个元素的"孩子" - children() 复制代码 代码如下: <ul id="parent"> <li id="son1">第一列</li> <li i

  • jQuery 利用ztree实现树形表格的实例代码

    最近公司的项目中要做一个树形表格,因为之前一直在用ztree实现基本的树形结构,理所当然的首先想到利用ztree来做. 网上找了一下别人做的树形表格,有使用ztree的,也有使用treeTable的,但效果都不太好,于是参考使用ztree的做法自己做了一个,贴出来供大家参考,请看注释说明,效果如下所示. <!DOCTYPE HTML> <html> <head> <link href="https://cdn.bootcss.com/zTree.v3/3

  • JQuery实现简单的复选框树形结构图示例【附源码下载】

    本文实例讲述了JQuery实现简单的复选框树形结构图.分享给大家供大家参考,具体如下: 这是自己写的简单树形结构图,实现的功能有: 1.最左边的按钮实现子目录的隐藏和显示 2.点击父节点的复选框选中后,父节点下的所有的子节点也选中:父节点未选中,则下面的所有的子节点也取消选中(全选和全不选) 3.选中一个子节点时相应的父节点也选中:当所有的子节点都没有选中时,父节点也取消选中 这是实现的最简单的功能.下面来具体的谈谈具体的实现: 1.引入库 所有的这些操作都是通过JQuery来实现的,所以首先要

随机推荐