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 相关文章推荐
javascript中的void运算符语法及使用介绍
Mar 10 Javascript
javascript特殊用法示例介绍
Nov 29 Javascript
JQuery的ON()方法支持的所有事件罗列
Feb 28 Javascript
JS实现上下左右对称的九九乘法表
Feb 22 Javascript
jQuery Validate验证框架详解(推荐)
Dec 17 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
Feb 19 Javascript
基于angular6.0实现的一个组件懒加载功能示例
Apr 12 Javascript
小程序视频列表中视频的播放与停止的示例代码
Jul 20 Javascript
Vue-CLI与Vuex使用方法实例分析
Jan 06 Javascript
vue2路由基本用法实例分析
Mar 06 Javascript
javascript实现贪吃蛇小游戏
Jul 28 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
Nov 12 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
兼容PHP和Java的des加密解密代码分享
2014/06/26 PHP
php使用GeoIP库实例
2014/06/27 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
2014/11/19 PHP
thinkphp数据查询和遍历数组实例
2014/11/28 PHP
再谈PHP中单双引号的区别详解
2016/06/12 PHP
php readfile()修改文件上传大小设置
2017/08/11 PHP
workerman结合laravel开发在线聊天应用的示例代码
2018/10/30 PHP
基于jQuery的日期选择控件
2009/10/27 Javascript
javascript setTimeout()传递函数参数(包括传递对象参数)
2010/04/07 Javascript
js中有关IE版本检测
2012/01/04 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
2016/11/29 Javascript
JS中的一些常用的函数式编程术语
2019/06/15 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
layui对工具条进行选择性的显示方法
2019/09/19 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
Vue搭建后台系统需要注意的问题
2019/11/08 Javascript
[03:58]兄弟们,回来开黑了!DOTA2昔日战友招募宣传视频
2016/07/17 DOTA
python利用urllib实现爬取京东网站商品图片的爬虫实例
2017/08/24 Python
TensorFlow Session会话控制&amp;Variable变量详解
2018/07/30 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
Python表达式的优先级详解
2020/02/18 Python
python实现将range()函数生成的数字存储在一个列表中
2020/04/02 Python
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
意大利在线药房:shop-farmacia.it
2019/03/12 全球购物
马来西亚最大的在线隐形眼镜商店:MrLens
2019/03/27 全球购物
一些关于MySql加速和优化的面试题
2014/01/30 面试题
大学生物业管理求职信
2013/10/24 职场文书
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
2014植树节活动总结
2014/03/11 职场文书
高校教师个人工作总结2014
2014/12/17 职场文书
2015年高三年级组工作总结
2015/07/21 职场文书
社会实践心得体会范文
2016/01/14 职场文书