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 相关文章推荐
5个最佳的Javascript日期处理类库分享
Apr 15 Javascript
javascript学习笔记(七) js函数介绍
Jun 19 Javascript
js采用concat和sort将N个数组拼接起来的方法
Jan 21 Javascript
node.js使用cluster实现多进程
Mar 17 Javascript
jQuery 常用代码集锦(必看篇)
May 16 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
Jan 13 Javascript
Vue.js实现列表清单的操作方法
Nov 15 Javascript
bootstrap模态框关闭后清除模态框的数据方法
Aug 10 Javascript
vue-cli3脚手架的配置及使用教程
Aug 28 Javascript
原生js拖拽实现图形伸缩效果
Feb 10 Javascript
js实现炫酷光感效果
Sep 05 Javascript
游戏开发中如何使用CocosCreator进行音效处理
Apr 14 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系统中使用PHP 5.3之后的库
2015/12/02 PHP
PHP5.3新特性小结
2016/02/14 PHP
浅谈PHP链表数据结构(单链表)
2016/06/08 PHP
Laravel框架之解决前端显示图片问题
2019/10/24 PHP
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
学习ExtJS fit布局使用说明
2009/10/08 Javascript
Javascript延迟执行实现方法(setTimeout)
2010/12/30 Javascript
详解JavaScript的流程控制语句
2015/11/30 Javascript
js密码强度检测
2016/01/07 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
2016/05/19 Javascript
js常用DOM方法详解
2017/02/04 Javascript
nodejs学习笔记之路由
2017/03/27 NodeJs
jQuery Ajax向服务端传递数组参数值的实例代码
2017/09/03 jQuery
浅谈Angular4中常用管道
2017/09/27 Javascript
vue利用v-for嵌套输出多层对象,分别输出到个表的方法
2018/09/07 Javascript
jquery登录的异步验证操作示例
2019/05/09 jQuery
微信小程序的引导页实现代码
2020/06/24 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
2020/08/27 Javascript
[16:43]Heroes19_剃刀(完美)
2014/10/31 DOTA
[01:13:59]LGD vs Mineski Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
对于Python的Django框架部署的一些建议
2015/04/09 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
python实现整数的二进制循环移位
2019/03/08 Python
Python下opencv图像阈值处理的使用笔记
2019/08/04 Python
利用Python的folium包绘制城市道路图的实现示例
2020/08/24 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
Juice Beauty官网:有机美容产品,护肤与化妆品
2020/06/13 全球购物
施华洛世奇新加坡官网:SWAROVSKI新加坡
2020/10/06 全球购物
劳动模范事迹材料
2014/01/19 职场文书
七年级地理教学反思
2014/01/26 职场文书
教师求职信
2014/06/17 职场文书
七年级作文之关于奶奶
2019/10/29 职场文书
详解Laravel框架的依赖注入功能
2021/05/27 PHP