全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

bootstrap插件treeview实现全选父节点下所有子节点和反选功能

项目需要实现权限管理,使用前端框架bootstrap,所以就直接选用了bootstrap的treeview扩展插件。先上图:

选中父节点时,父节点下所有子节点也都全部选中,看代码

1、HTML代码

<h2>TreeView Checkable</h2>
<div id="treeview-checkable"></div>

2、Json数据

function getTvStateData() {
   var defaultData = [
    {
     text: 'Parent 1',
     href: '#parent1',
     tags: ['4'],
     state: {
      checked: true
     },
     nodes: [
      {
       text: 'Child 1',
       href: '#child1',
       tags: ['2'],
       nodes: [
        {
         text: 'Grandchild 1',
         href: '#grandchild1',
         tags: ['0']
        },
        {
         text: 'Grandchild 2',
         href: '#grandchild2',
         tags: ['0']
        }
       ]
      },
      {
       text: 'Child 2',
       href: '#child2',
       tags: ['0']
      }
     ]
    },
    {
     text: 'Parent 2',
     href: '#parent2',
     tags: ['0'],
     nodes: [
      {
       text: 'Child 1',
       href: '#child1',
       tags: ['2'],
       nodes: [
        {
         text: 'Grandchild 1',
         href: '#grandchild1',
         tags: ['0']
        },
        {
         text: 'Grandchild 2',
         href: '#grandchild2',
         tags: ['0']
        }
       ]
      },
      {
       text: 'Child 2',
       href: '#child2',
       tags: ['0']
      }
     ]
    },
    {
     text: 'Parent 3',
     href: '#parent3'
    },
    {
     text: 'Parent 4',
     href: '#parent4',
     tags: ['0']
    },
    {
     text: 'Parent 5',
     href: '#parent5',
     tags: ['0']
    }
   ];

   return defaultData;
  }

3、JS数据绑定,加载TreeView

$(function() {
 var $checkableTree = $('#treeview-checkable')
    .treeview({
     data: getTvStateData(), //数据
     showIcon: false,
     showCheckbox: true,
     levels: 1,
     onNodeChecked: function(event, node) { //选中节点
      var selectNodes = getChildNodeIdArr(node); //获取所有子节点
      if (selectNodes) { //子节点不为空,则选中所有子节点
       $('#treeview-checkable').treeview('checkNode', [selectNodes, { silent: true }]);
      }
      var parentNode = $("#treeview-checkable").treeview("getNode", node.parentId);
      setParentNodeCheck(node);
     },
     onNodeUnchecked: function(event, node) { //取消选中节点
      var selectNodes = getChildNodeIdArr(node); //获取所有子节点
      if (selectNodes) { //子节点不为空,则取消选中所有子节点
       $('#treeview-checkable').treeview('uncheckNode', [selectNodes, { silent: true }]);
      }
     },
     onNodeExpanded:
      function(event, data) {
       if (data.nodes === undefined || data.nodes === null) {
        
       } else if (data.tags[0] === "2") {
        alert("Tags 2");
       } else {
        alert("1111");
       }
      }
    });
 });

4、选中/取消选中父节点时,选中/取消选中所有子节点,以及选中所有子节点时,选中父节点

function getChildNodeIdArr(node) {
   var ts = [];
   if (node.nodes) {
    for (x in node.nodes) {
     ts.push(node.nodes[x].nodeId);
     if (node.nodes[x].nodes) {
      var getNodeDieDai = getChildNodeIdArr(node.nodes[x]);
      for (j in getNodeDieDai) {
       ts.push(getNodeDieDai[j]);
      }
     }
    }
   } else {
    ts.push(node.nodeId);
   }
   return ts;
  }

  function setParentNodeCheck(node) {
   var parentNode = $("#treeview-checkable").treeview("getNode", node.parentId);
   if (parentNode.nodes) {
    var checkedCount = 0;
    for (x in parentNode.nodes) {
     if (parentNode.nodes[x].state.checked) {
      checkedCount ++;
     } else {
      break;
     }
    }
    if (checkedCount === parentNode.nodes.length) {
     $("#treeview-checkable").treeview("checkNode", parentNode.nodeId);
     setParentNodeCheck(parentNode);
    }
   }
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# bootstrap  # treeview  # 全选  # 反选  # bootstrap treeview 扩展addNode方法动态添加子节点的方法  # BootStrap TreeView使用实例详解  # JS树形菜单组件Bootstrap TreeView使用方法详解  # 浅析使用BootStrap TreeView插件实现灵活配置快递模板  # Bootstrap树形菜单插件TreeView.js使用方法详解  # 浅析BootStrap Treeview的简单使用  # 基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符  # 基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符  # bootstrap-treeview自定义双击事件实现方法  # bootstrap-Treeview实现级联勾选  # 为空  # 也都  # 绑定  # 大家多多  # 上图  # 加载  # href  # Parent  # text  # getTvStateData  # true  # defaultData  # var  # tags  # Child  # nodes  # Grandchild  # checked  # state  # brush 


相关文章: 整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  如何在Golang中使用replace替换模块_指定本地或远程路径  建站之星如何助力企业快速打造五合一网站?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  建站之星如何快速解决建站难题?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  建站之星Pro快速搭建教程:模板选择与功能配置指南  宁波免费建站如何选择可靠模板与平台?  如何快速查询域名建站关键信息?  建站主机服务器选购指南:轻量应用与VPS配置解析  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  高端建站如何打造兼具美学与转化的品牌官网?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  网站制作的步骤包括,正确网址格式怎么写?  无锡营销型网站制作公司,无锡网选车牌流程?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  制作网页的网站有哪些,电脑上怎么做网页?  免费网站制作appp,免费制作app哪个平台好?  建站之星安装路径如何正确选择及配置?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  已有域名和空间,如何快速搭建网站?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  建站主机选哪种环境更利于SEO优化?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  淘宝制作网站有哪些,淘宝网官网主页?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  学校建站服务器如何选型才能满足性能需求?  建站之星代理费用多少?最新价格详情介绍  如何快速重置建站主机并恢复默认配置?  如何在建站之星网店版论坛获取技术支持?  如何通过IIS搭建网站并配置访问权限?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  如何在Golang中指定模块版本_使用go.mod控制版本号  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  想学网站制作怎么学,建立一个网站要花费多少?  制作网站的软件免费下载,免费制作app哪个平台好?  制作网站的模板软件,网站怎么建设?  建站之星展会模板:智能建站与自助搭建高效解决方案  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  如何在局域网内绑定自建网站域名?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  如何快速完成中国万网建站详细流程?  网站微信制作软件,如何制作微信链接?  如何通过主机屋免费建站教程十分钟搭建网站?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  C++中引用和指针有什么区别?(代码说明) 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。