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 相关文章推荐
jQuery实现的背景动态变化导航菜单效果
Aug 24 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
Jan 26 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
Dec 14 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
Jan 04 Javascript
js仿京东轮播效果 选项卡套选项卡使用
Jan 12 Javascript
Bootstrap警告框(Alert)插件使用方法
Mar 21 Javascript
基于JavaScript实现的顺序查找算法示例
Apr 14 Javascript
JavaScript使用readAsDataURL读取图像文件
May 10 Javascript
微信小程序的分类页面制作
Jun 27 Javascript
react写一个select组件的实现代码
Apr 03 Javascript
js实现3D照片墙效果
Oct 28 Javascript
vue router返回到指定的路由的场景分析
Nov 10 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导出Excel实例讲解
2016/01/24 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
Google韩国首页图标动画效果
2007/08/26 Javascript
JS Array对象入门分析
2008/10/30 Javascript
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
js数组的操作详解
2013/03/27 Javascript
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
node.js中的fs.createReadStream方法使用说明
2014/12/17 Javascript
基于nodejs+express(4.x+)实现文件上传功能
2015/11/23 NodeJs
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
vue框架搭建之axios使用教程
2018/07/11 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
CryptoJS中AES实现前后端通用加解密技术
2018/12/18 Javascript
Vue自定义指令结合阿里云OSS优化图片的实现方法
2019/11/12 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
node.js 微信开发之定时获取access_token
2020/02/07 Javascript
微信小程序手动添加收货地址省市区联动
2020/05/18 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
js实现简单的轮播图效果
2020/12/13 Javascript
vue 页面跳转的实现方式
2021/01/12 Vue.js
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
python实现把二维列表变为一维列表的方法分析
2019/10/08 Python
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
摩托车和ATV零件、配件和服装的首选在线零售商:MotoSport
2017/12/22 全球购物
乐高瑞士官方商店:LEGO CH
2020/08/16 全球购物
《蒲公英》教学反思
2014/02/28 职场文书
主办会计岗位职责
2014/03/13 职场文书
购房意向书范本
2014/04/01 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
医学专业大学生职业生涯规划书
2014/10/25 职场文书
基于Nginx实现限制某IP短时间访问次数
2021/03/31 Servers
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android