Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码


Posted in Javascript onAugust 22, 2017

TreePanel继承自Panel,在ExtJS中使用树控件含有丰富的属性和方法实现复杂的功能。其中Ext.tree.TreeNode代表一个树节点,比较常用的属性包括text、id、icon、checked等、异步树Ext.tree.AsyncTreeNode、树加载器Ext.tree.TreeLoader。下面介绍Extjs 中的 Treepanel 实现菜单级联选中效果。

在 treepanel 里添加以下代码即可实现级联选中效果

主要实现了以下效果:

1.点击父级批量设置所有子节点选中状态

2.点击当前节点寻找所有父级并设置选中状态

3.取消当前节点并取消所有子节点选中状态

4.取消当前节点根据需要取消上级节点的选中状态

listeners:{
  checkchange:function(node,checked,eOpts){
    // 批量设置子节点选中效果
    function setChildChecked(pNode){
      pNode.set('checked',checked);
      pNode.eachChild(function(child){
        arguments.callee(child);
      })
    }
    setChildChecked(node);
    // 当前节点取消选中时 需要判断当前节点的父节点下的所有子节点是否都不是选中状态
    function setParentCheckedFalse(currentNode){
      var parentNode = currentNode.parentNode,
        isValid = true;
      if(parentNode != null){
        if(checked == false){
          parentNode.eachChild(function (child) {
            if(child.get('checked') != false){
              isValid = false;
              return false;
            }
          });
          if(isValid){
            parentNode.set('checked',checked);
          }
        }else{
          parentNode.set('checked',true);
        }
        arguments.callee(parentNode)
      }
    }
    setParentCheckedFalse(node);
  }
}

总结

以上所述是小编给大家介绍的Extjs 中 Treepanel 实现菜单级联选中效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
ExtJS 简介 让你知道extjs是什么
Dec 29 Javascript
新手常遇到的一些jquery问题整理
Aug 16 Javascript
模拟jQuery ajax服务器端与客户端通信的代码
Mar 28 Javascript
基于Jquery实现表格动态分页实现代码
Jun 21 Javascript
JQuery操作Select的Options的Bug(IE8兼容性视图模式)
Apr 21 Javascript
AngularJS基础 ng-href 指令用法
Aug 01 Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
Nov 04 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
Jan 22 Javascript
微信小程序实现刷脸登录
May 25 Javascript
老生常谈JS中的继承及实现代码
Jul 06 Javascript
Vue 路由间跳转和新开窗口的方式(query、params)
Dec 25 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
Mar 25 Javascript
bootstrap3-dialog-master模态框使用详解
Aug 22 #Javascript
关于JS与jQuery中的文档加载问题
Aug 22 #jQuery
bootstrap confirmation按钮提示组件使用详解
Aug 22 #Javascript
bootstrap multiselect下拉列表功能
Aug 22 #Javascript
浅谈Vue父子组件和非父子组件传值问题
Aug 22 #Javascript
纯js实现图片匀速淡入淡出效果
Aug 22 #Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
Aug 22 #Javascript
You might like
PHP 的几个配置文件函数
2006/12/21 PHP
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
2009/08/07 PHP
PHP 如何获取二维数组中某个key的集合
2014/06/03 PHP
php批量删除数据库下指定前缀的表以prefix_为例
2014/08/24 PHP
PHP查询分页的实现代码
2017/06/09 PHP
js 事件处理函数间的Event物件是否全等
2011/04/08 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
2011/04/12 Javascript
JavaScript中的原型和继承详解(图文)
2014/07/18 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
javascript+canvas制作九宫格小程序
2014/12/28 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
用jQuery实现优酷首页轮播图
2017/01/09 Javascript
利用Js+Css实现折纸动态导航效果实例源码
2017/01/25 Javascript
jQuery实现弹幕效果
2017/02/17 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
详解webpack异步加载业务模块
2017/06/23 Javascript
vue移动端监听滚动条高度的实现方法
2018/09/03 Javascript
vue实现路由懒加载及组件懒加载的方式
2019/06/11 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
浅谈微信小程序列表埋点曝光指南
2019/10/15 Javascript
[36:29]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs TNC
2018/04/02 DOTA
[44:41]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python类装饰器用法实例
2015/06/04 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
2015/12/25 Python
Python中的单继承与多继承实例分析
2018/05/10 Python
Python使用pandas处理CSV文件的实例讲解
2018/06/22 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
CSS类名支持中文命名的示例
2014/04/04 HTML / CSS
CSS3 实现倒计时效果
2020/11/25 HTML / CSS
石油工程专业毕业生求职信
2014/04/13 职场文书
拒绝黄毒毒宣传标语
2014/06/26 职场文书
爱国电影观后感
2015/06/19 职场文书
SQL Server使用PIVOT与unPIVOT实现行列转换
2022/05/25 SQL Server
vue router 动态路由清除方式
2022/05/25 Vue.js