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 this关键字使用分析
Oct 21 Javascript
javascript Onunload与Onbeforeunload使用小结
Dec 31 Javascript
读jQuery之四(优雅的迭代)
Jun 20 Javascript
jQuery Tools tooltip使用说明
Jul 14 Javascript
封装了一个支持匿名函数的Javascript事件监听器
Jun 05 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
Sep 30 Javascript
jQuery基础_入门必看知识点
Jul 04 Javascript
老生常谈js中的MVC
Jul 25 Javascript
浅谈在Vue-cli里基于axios封装复用请求
Nov 06 Javascript
使用pm2部署node生产环境的方法步骤
Mar 09 Javascript
原生JS实现随机点名项目的实例代码
Apr 30 Javascript
微信小程序渲染性能调优小结
Jul 30 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基本语法总结
2014/09/06 PHP
PHP curl模拟登录带验证码的网站
2015/11/30 PHP
jquery加载页面的方法(页面加载完成就执行)
2011/06/21 Javascript
浅谈JavaScript数据类型
2015/03/03 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
2016/12/13 Javascript
JS闭包可被利用的常见场景小结
2017/04/09 Javascript
AngularJS实现动态添加Option的方法
2017/05/17 Javascript
JavaScript事件方法(实例讲解)
2017/06/27 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
JS实现的合并两个有序链表算法示例
2019/02/25 Javascript
基于JS实现web端录音与播放功能
2019/04/17 Javascript
Layui点击图片弹框预览的实现方法
2019/09/16 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
2019/09/19 Javascript
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
python format 格式化输出方法
2018/07/16 Python
python re库的正则表达式入门学习教程
2019/03/08 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
2019/07/23 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
python numpy矩阵信息说明,shape,size,dtype
2020/05/22 Python
python中列表的含义及用法
2020/05/26 Python
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
亚洲独特体验旅游专家:eOasia
2018/08/15 全球购物
3个CCIE对一个工程师的面试题
2012/05/06 面试题
高中生学习的自我评价
2013/12/14 职场文书
教师队伍管理制度
2014/01/14 职场文书
保险公司早会主持词
2014/03/22 职场文书
大学拉赞助协议书范文
2014/09/26 职场文书
车间班组长竞聘书
2015/09/15 职场文书
学习习近平主席讲话心得体会
2016/01/20 职场文书
python tkinter实现定时关机
2021/04/21 Python
MySQL CHAR和VARCHAR该如何选择
2021/05/31 MySQL
centos7安装mysql5.7经验记录
2022/05/02 Servers
Python Flask实现进度条
2022/05/11 Python