热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

EasyUI递归遍历tree以及全选与全不选

EasyUI网上的全选与全不选都是只针对根节点的,并没有对子节点进行处理,因此自己略做改进写了一版,如下:function

EasyUI网上的全选与全不选都是只针对根节点的,并没有对子节点进行处理,因此自己略做改进写了一版,如下:

function treeChecked(selected, treeMenu) {var _tree = $('#' + treeMenu);var roots = _tree.tree('getRoots');//返回tree的所有根节点数组if (selected.checked) {traverseTree(_tree,roots,'check')} else {traverseTree(_tree,roots,'uncheck')}
}
function traverseTree(_tree,parent,checkState){if (typeof(_tree) &#61;&#61; &#39;undefined&#39; || typeof(parent) &#61;&#61; &#39;undefined&#39; || typeof(checkState) &#61;&#61; &#39;undefined&#39;){return;}for ( var i &#61; 0; i < parent.length; i&#43;&#43;) {var node &#61; _tree.tree(&#39;find&#39;, parent[i].id);//查找节点if (_tree.tree(&#39;isLeaf&#39;, node.target)) {_tree.tree(checkState, node.target);//将得到的节点选中} else {if (typeof(node.checked) !&#61;&#61; &#39;undefined&#39;) {_tree.tree(checkState, node.target);//将得到的节点选中}var children &#61; _tree.tree(&#39;getChildren&#39;, node.target);if (children) {traverseTree(_tree, children, checkState);}}}
}//使用方法
<input title&#61;"全选/反选" type&#61;"checkbox" onClick&#61;"treeChecked(this,&#39;treeId&#39;)"/>

步骤分析如下&#xff1a;

  • 1.获取到tree并拿到它的root节点数组
  • 2.判断check box是否勾选&#xff0c;这将决定是全选还是全不选
  • 3.判断有无子节点&#xff0c;如果没有则结束遍历
  • 4.遍历子节点数组&#xff0c;拿到子节点
  • 5.判断是否叶子节点&#xff0c;如果是则进行check or uncheck处理
  • 6.如果不是叶子节点&#xff0c;但是它有复选框的时候&#xff0c;也会进行check or uncheck处理
  • 7.通过getChildren方法拿到当前节点的子节点数组&#xff0c;然后判断是否为null&#xff0c;不为null进行递归遍历

注意点

  • 1.进行递归遍历要谨慎&#xff0c;可能会导致堆栈溢出&#xff0c;一定要有适当的结束条件
  • 2.如果业务有特殊需求&#xff0c;需要对js进行适当调整

推荐阅读
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 查找给定字符串的所有不同回文子字符串原文:https://www ... [详细]
  • 点击后defaultEducation的值明明改变了,但props传给子组件却watch不到 ... [详细]
  • 第二次网页前端培训笔记(表单,INPUT及常用字符)
    1.表单form2.INPUT编号: ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • ASP.NET MVC验证标注的扩展checkbox必选
    我们知道ASP.NETmvc提供一些表单的验证标注,比如必填属性RequiredAttribute但是这个属性不适合选择框的必选但是很多时候,我们却是需要一些必选的单选框比如网站注 ... [详细]
  • 本篇文章为大家展示了input语句的作用有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。HTML标签 ... [详细]
author-avatar
10651s
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有