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 相关文章推荐
学习JS面向对象成果 借国庆发布个最新作品与大家交流
Oct 03 Javascript
为指定元素增加样式的js代码
Dec 09 Javascript
基于json的jquery地区联动效果代码
Jul 06 Javascript
判断一个变量是数组Array类型的方法
Sep 16 Javascript
JavaScript获取表单enctype属性的方法
Apr 02 Javascript
js中的事件委托或是事件代理使用详解
Jun 23 Javascript
详解vue axios中文文档
Sep 12 Javascript
3种vue路由传参的基本模式
Feb 22 Javascript
小程序ios音频播放没声音问题的解决
Jul 11 Javascript
JavaScript创建防篡改对象的方法分析
Dec 30 Javascript
React路由鉴权的实现方法
Sep 05 Javascript
js中offset,client , scroll 三大元素知识点总结
Sep 11 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
第六节 访问属性和方法 [6]
2006/10/09 PHP
最令PHP初学者们头痛的十四个问题
2007/01/15 PHP
百度站点地图(百度sitemap)生成方法分享
2014/01/09 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
分享自定义的几个PHP功能函数
2015/04/15 PHP
Yii数据读取与跳转参数传递用法实例分析
2016/07/12 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
PHP解决高并发的优化方案实例
2020/12/10 PHP
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
终于实现了!精彩的jquery弹幕效果
2016/07/18 Javascript
AngularJS中的DOM操作用法分析
2016/11/04 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
2017/03/30 Javascript
Vue前后端不同端口的实现方法
2018/09/19 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
[04:13]2018国际邀请赛典藏宝瓶Ⅱ饰品一览
2018/07/21 DOTA
[01:15:16]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第一场 1月26日
2021/03/11 DOTA
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
Python在线运行代码助手
2016/07/15 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
2019/08/02 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
2019/09/30 Python
解决django model修改添加字段报错的问题
2019/11/18 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
苹果音乐订阅:Apple Music
2018/08/02 全球购物
团队精神演讲稿
2013/12/31 职场文书
七一表彰活动方案
2014/01/18 职场文书
两只小狮子教学反思
2014/02/05 职场文书
班干部竞选演讲稿
2014/04/24 职场文书
年终晚会活动方案
2014/08/21 职场文书
高等学院职业生涯规划书范文
2014/09/16 职场文书
2015年高校图书馆工作总结
2015/04/30 职场文书
2019公司管理制度
2019/04/19 职场文书
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS
教你一步步实现一个简易promise
2021/11/02 Javascript