bootstrap-Treeview实现级联勾选


Posted in Javascript onNovember 23, 2017

本文实例为大家分享了bootstrap Treeview实现级联勾选的具体代码,供大家参考,具体内容如下

核心方法

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]); 
  } 
 } 
}

6-27 : 经部分网友反馈,图中的 if(!("id" in perentNode)) 需要改成 if(!("nodeId" in perentNode))才能正常运行,我想应该是版本问题,上面代码中已经改正了。如果运行不了,请改回 if(!("id" in perentNode))试一下。(谢谢大家提出)
因为treeview中silent属性指定了无效(我也不知道为什么委屈),所以多加了两个变量来控制

$('#searchTree').treeview({ 
  showCheckbox:true, 
  data:treeData, 
  onNodeChecked:nodeChecked , 
  onNodeUnchecked:nodeUnchecked 
 });

效果图:

bootstrap-Treeview实现级联勾选

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Cookie 注入是怎样产生的
Apr 08 Javascript
网页自动跳转代码收集
Sep 27 Javascript
Aptana调试javascript图解教程
Nov 30 Javascript
15款优秀的jQuery导航菜单插件分享
Jul 19 Javascript
jquery $.getJSON()跨域请求
Dec 21 Javascript
jQuery中的read和JavaScript中的onload函数的区别
Aug 27 Javascript
jQuery实现当前页面标签高亮显示的方法
Mar 10 Javascript
JS实现左右拖动改变内容显示区域大小的方法
Oct 13 Javascript
javascript中json对象json数组json字符串互转及取值方法
Apr 19 Javascript
微信小程序三级联动地址选择器的实例代码
Jul 12 Javascript
vue-cli构建vue项目的步骤详解
Jan 27 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
Nov 07 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
Nov 23 #Javascript
sublime text配置node.js调试(图文教程)
Nov 23 #Javascript
Vue代码分割懒加载的实现方法
Nov 23 #Javascript
初探js和简单隐藏效果的实例
Nov 23 #Javascript
详解如何在angular2中获取节点
Nov 23 #Javascript
Vuejs中使用markdown服务器端渲染的示例
Nov 22 #Javascript
浅谈Vue-cli 命令行工具分析
Nov 22 #Javascript
You might like
判“新”函数:得到今天与明天的秒数
2006/10/09 PHP
默默简单的写了一个模板引擎
2007/01/02 PHP
PHP 地址栏信息的获取代码
2009/01/07 PHP
Thinkphp中Create方法深入探究
2014/06/16 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
jquery 事件对象属性小结
2010/04/27 Javascript
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
2014/11/28 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
Javascript使用post方法提交数据实例
2015/08/03 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
2016/09/05 Javascript
javaScript语法总结
2016/11/25 Javascript
es6的数字处理的方法(5个)
2017/03/16 Javascript
Nodejs实现多房间简易聊天室功能
2017/06/20 NodeJs
vue 自定义 select内置组件
2018/04/10 Javascript
javascript实现小型区块链功能
2019/04/03 Javascript
layui时间控件选择时间范围的实现方法
2019/09/28 Javascript
详解为什么Vue中不要用index作为key(diff算法)
2020/04/04 Javascript
JS简易计算器实例讲解
2020/06/30 Javascript
详解微信小程序动画Animation执行过程
2020/09/23 Javascript
[02:51]2014DOTA2国际邀请赛 IG战队官方纪录片
2014/07/21 DOTA
python处理大数字的方法
2015/05/27 Python
Python爬虫框架Scrapy实例代码
2018/03/04 Python
Django的用户模块与权限系统的示例代码
2019/07/24 Python
Python运行异常管理解决方案
2020/03/09 Python
学python爬虫能做什么
2020/07/29 Python
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
高级3D打印市场:Gambody
2019/12/26 全球购物
护理专业毕业生自我鉴定
2013/10/08 职场文书
文明学生标兵事迹
2014/01/21 职场文书
职业女性的职业规划
2014/03/04 职场文书
2015年秋季运动会前导词
2015/07/20 职场文书
高考升学宴主持词
2019/06/21 职场文书
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL
解决Mysql报错 Table 'mysql.user' doesn't exist
2022/05/06 MySQL