bootstrap treeview 树形菜单带复选框及级联选择功能


Posted in Javascript onJune 08, 2018

具体代码如下所示:

<div id="searchTree"></div> 
 <script>
  var treeData = [{
   text: "Parent 1",
   nodes: [{
    text: "Child 1",
    nodes: [{
     text: "Grandchild 1"
    }, {
     text: "Grandchild 2",
     nodes: [{
      text: "Grandchild 2-1",
      nodes: [{
       text: "Grandchild 2-1-1"
      }, {
       text: "Grandchild 2-2-1",
      }]
     }, {
      text: "Grandchild 1-2",
     }]
    }]
   }, {
    text: "Child 2",
    nodes: [{
     text: "Grandchild 2-1"
    }, {
     text: "Grandchild 2-2",
    }]
   }]
  }, {
   text: "Parent 2",
   id:'11111'
  }, {
   text: "Parent 3"
  }, {
   text: "Parent 4"
  }, {
   text: "Parent 5"
  }];
  var nodeCheckedSilent = false;
  function nodeChecked(event, node) {
   if (nodeCheckedSilent) {
    return;
   }
   nodeCheckedSilent = true;
   checkAllParent(node);
   checkAllSon(node);
   nodeCheckedSilent = false;
  }
  var nodeUncheckedSilent = false;
  function nodeUnchecked(event, node) {
   if (nodeUncheckedSilent)
    return;
   nodeUncheckedSilent = true;
   uncheckAllParent(node);
   uncheckAllSon(node);
   nodeUncheckedSilent = false;
  }
  //选中全部父节点 
  function checkAllParent(node) {
   $('#searchTree').treeview('checkNode', node.nodeId, {
    silent: true
   });
   var parentNode = $('#searchTree').treeview('getParent', node.nodeId);
   if (!("nodeId" in parentNode)) {
    return;
   } else {
    checkAllParent(parentNode);
   }
  }
  //取消全部父节点 
  function uncheckAllParent(node) {
   $('#searchTree').treeview('uncheckNode', node.nodeId, {
    silent: true
   });
   var siblings = $('#searchTree').treeview('getSiblings', node.nodeId);
   var parentNode = $('#searchTree').treeview('getParent', node.nodeId);
   if (!("nodeId" in parentNode)) {
    return;
   }
   var isAllUnchecked = true; //是否全部没选中 
   for (var i in siblings) {
    if (siblings[i].state.checked) {
     isAllUnchecked = false;
     break;
    }
   }
   if (isAllUnchecked) {
    uncheckAllParent(parentNode);
   }
  }
  //级联选中所有子节点 
  function checkAllSon(node) {
   $('#searchTree').treeview('checkNode', node.nodeId, {
    silent: true
   });
   if (node.nodes != null && node.nodes.length > 0) {
    for (var i in node.nodes) {
     checkAllSon(node.nodes[i]);
    }
   }
  }
  //级联取消所有子节点 
  function uncheckAllSon(node) {
   $('#searchTree').treeview('uncheckNode', node.nodeId, {
    silent: true
   });
   if (node.nodes != null && node.nodes.length > 0) {
    for (var i in node.nodes) {
     uncheckAllSon(node.nodes[i]);
    }
   }
  }
  $('#searchTree').treeview({
   showCheckbox: true,
   data: treeData,
   onNodeChecked: nodeChecked,
   onNodeUnchecked: nodeUnchecked
  });
  </script>

总结

以上所述是小编给大家介绍的bootstrap treeview 树形菜单带复选框及级联选择功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
fckeditor粘贴Word时弹出窗口取消的方法
Oct 30 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
Mar 02 Javascript
浅谈JSON.parse()和JSON.stringify()
Jul 14 Javascript
学习javascript面向对象 掌握创建对象的9种方式
Jan 04 Javascript
jQuery页面刷新(局部、全部)问题分析
Jan 09 Javascript
分享10个优化代码的CSS和JavaScript工具
May 11 Javascript
详解Node.js模块间共享数据库连接的方法
May 24 Javascript
AngularJS入门教程之过滤器详解
Aug 19 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
Jan 23 Javascript
纯js实现图片匀速淡入淡出效果
Aug 22 Javascript
基于JSON数据格式详解
Aug 31 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
Apr 21 Javascript
原生实现一个react-redux的代码示例
Jun 08 #Javascript
vue项目中使用百度地图的方法
Jun 08 #Javascript
浅谈Vue路由快照实现思路及其问题
Jun 07 #Javascript
JavaScript中click和onclick本质区别与用法分析
Jun 07 #Javascript
jQuery动态移除与增加onclick属性的方法详解
Jun 07 #jQuery
使用Vue-cli 3.0搭建Vue项目的方法
Jun 07 #Javascript
vue 国际化 vue-i18n 双语言 语言包
Jun 07 #Javascript
You might like
怎样在UNIX系统下安装php3
2006/10/09 PHP
PHP获取url的函数代码
2011/08/02 PHP
PHP检查端口是否可以被绑定的方法示例
2018/08/09 PHP
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
javascript学习之闭包分析
2010/12/02 Javascript
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
JavaScript高级程序设计 事件学习笔记
2011/09/10 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
2014/04/25 Javascript
jquery 实现两Select 标签项互调示例代码
2014/09/25 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
2016/07/25 Javascript
详解springmvc 接收json对象的两种方式
2016/12/06 Javascript
Web 开发中Ajax的Session 超时处理方法
2017/01/19 Javascript
详解如何在Angular中快速定位DOM元素
2017/05/17 Javascript
vue2.0 自定义组件的方法(vue组件的封装)
2018/06/05 Javascript
node全局变量__dirname与__filename的区别
2019/01/14 Javascript
微信小程序常用简易小函数总结
2019/02/01 Javascript
微信小程序如何获取用户头像和昵称
2019/09/23 Javascript
javascript中导出与导入实现模块化管理教程
2020/12/03 Javascript
[01:12:40]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第三场 1月25日
2021/03/11 DOTA
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
Python中的测试模块unittest和doctest的使用教程
2015/04/14 Python
python素数筛选法浅析
2018/03/19 Python
python对excel文档去重及求和的实例
2018/04/18 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
flask框架自定义url转换器操作详解
2020/01/25 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
协商一致解除劳动合同协议书
2014/09/14 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
电子商务实训报告总结
2014/11/05 职场文书
优秀志愿者感言
2015/08/01 职场文书
任命书格式模板
2015/09/22 职场文书
2016年春节问候语
2015/11/11 职场文书
总结几个非常实用的Python库
2021/06/26 Python