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 相关文章推荐
兼容多浏览器的字幕特效Marquee的通用js类
Jul 20 Javascript
Jquery中增加参数与Json转换代码
Nov 20 Javascript
用apply让javascript函数仅执行一次的代码
Jun 27 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
Oct 17 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
Jul 11 Javascript
vue1.0和vue2.0的watch监听事件写法详解
Sep 11 Javascript
React如何实现浏览器打印部分内容详析
May 19 Javascript
详解JavaScript 高阶函数
Sep 14 Javascript
如何在JavaScript中等分数组的实现
Dec 13 Javascript
javascript实现下拉菜单效果
Feb 09 Javascript
解决Vue+SpringBoot+Shiro跨域问题
Jun 09 Vue.js
JavaScript原型链详解
Nov 07 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 第三节 变量介绍
2012/04/28 PHP
php绘制一个扇形的方法
2015/01/24 PHP
php的debug相关函数用法示例
2016/07/11 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
按钮JS复制文本框和表格的代码
2011/04/01 Javascript
JS delegate与live浅析
2013/12/21 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
angular源码学习第一篇 setupModuleLoader方法
2016/10/20 Javascript
基于Vue生产环境部署详解
2017/09/15 Javascript
关于 angularJS的一些用法
2017/11/29 Javascript
nodejs 生成和导出 word的实例代码
2018/07/31 NodeJs
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
python 解析XML python模块xml.dom解析xml实例代码
2014/02/07 Python
python脚本设置系统时间的两种方法
2016/02/21 Python
python实现搜索本地文件信息写入文件的方法
2016/02/22 Python
利用python发送和接收邮件
2016/09/27 Python
Python实现随机选择元素功能
2017/09/14 Python
python中format()函数的简单使用教程
2018/03/14 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
python实现文件的分割与合并
2019/08/29 Python
Python list运算操作代码实例解析
2020/01/20 Python
用python写爬虫简单吗
2020/07/28 Python
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
培训班主持词
2014/03/28 职场文书
团队拓展活动方案
2014/08/28 职场文书
融资合作协议书范本
2014/10/17 职场文书
2014年服务员工作总结
2014/11/18 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
六年级语文教学反思
2016/03/03 职场文书
25张裸眼3D图片,带你重温童年的记忆,感受3D的魅力
2022/02/06 杂记
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers