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 相关文章推荐
关于event.cancelBubble和event.stopPropagation()的区别介绍
Dec 11 Javascript
解析JSON对象与字符串之间的相互转换
Dec 18 Javascript
js 操作符汇总
Nov 08 Javascript
JS简单限制textarea内输入字符数量的方法
Oct 14 Javascript
浅析angularJS中的ui-router和ng-grid模块
May 20 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
Jun 06 Javascript
微信小程序 wxapp画布 canvas详细介绍
Oct 31 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
Sep 21 Javascript
JS中appendChild追加子节点无效的解决方法
Oct 14 Javascript
js实现全选反选不选功能代码详解
Apr 24 Javascript
详解如何写出一个利于扩展的vue路由配置
May 16 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
Oct 29 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 curl 伪造IP来源的实例代码
2012/11/01 PHP
Linux下安装oracle客户端并配置php5.3
2014/10/12 PHP
PHP抓取网页、解析HTML常用的方法总结
2015/07/01 PHP
PHP读取PPT文件的方法
2015/12/10 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
Laravel中前端js上传图片到七牛云的示例代码
2017/09/04 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
2019/12/03 PHP
Javascript Ajax异步读取RSS文档具体实现
2013/12/12 Javascript
location.href用法总结(最主要的)
2013/12/27 Javascript
利用js正则表达式验证手机号,email地址,邮政编码
2014/01/23 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
2015/12/10 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
js实现点击图片自动提交action的简单方法
2016/10/16 Javascript
Vue计算属性的使用
2017/08/04 Javascript
js使用xml数据载体实现城市省份二级联动效果
2017/11/08 Javascript
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
浅谈React高阶组件
2018/03/28 Javascript
解决vue接口数据赋值给data没有反应的问题
2018/08/27 Javascript
[28:42]Ti4正赛VG vs NEWBEE1
2014/07/19 DOTA
python基于右递归解决八皇后问题的方法
2015/05/25 Python
python类和继承用法实例
2015/07/07 Python
Python连接phoenix的方法示例
2017/09/29 Python
Python模块文件结构代码详解
2018/02/03 Python
python中字符串比较使用is、==和cmp()总结
2018/03/18 Python
Python在for循环中更改list值的方法【推荐】
2018/08/17 Python
对python多线程与global变量详解
2018/11/09 Python
Python基于pandas绘制散点图矩阵代码实例
2020/06/04 Python
美国受欢迎的眼影品牌:BH Cosmetics
2016/10/25 全球购物
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
部门活动策划方案
2014/08/16 职场文书
出纳试用期自我评价
2015/03/10 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
navicat 连接Ubuntu虚拟机的mysql的操作方法
2022/04/02 MySQL