JQuery实现简单的复选框树形结构图示例【附源码下载】


Posted in jQuery onJuly 16, 2019

本文实例讲述了JQuery实现简单的复选框树形结构图。分享给大家供大家参考,具体如下:

JQuery实现简单的复选框树形结构图示例【附源码下载】

这是自己写的简单树形结构图,实现的功能有:

1.最左边的按钮实现子目录的隐藏和显示

2.点击父节点的复选框选中后,父节点下的所有的子节点也选中;父节点未选中,则下面的所有的子节点也取消选中(全选和全不选)

3.选中一个子节点时相应的父节点也选中;当所有的子节点都没有选中时,父节点也取消选中

这是实现的最简单的功能。下面来具体的谈谈具体的实现:

1.引入库

所有的这些操作都是通过JQuery来实现的,所以首先要引入JQuery库,可以到官网下载JQuery库,也可以通过CDN的方式来引用,这里我是通过CDN的方式引用的:

<!-- 引入JQuery -->
<script src="https://cdn.bootcss.com/jquery/3.0.0-alpha1/jquery.min.js"></script>

2.子目录的隐藏和显示

这里我只是做了一个简单的,可能看起来不是很美观,我的最左边放的是一个button按钮,并且没有经过CSS美化,所以看起来比较丑,不过这都不是重点,重点是我们功能的实现,由于我的代码比较简单并且注释我也写的比较详细了,所以这里我就不做过多的介绍,直接贴代码:

<!-- 切换子目录隐藏或显示的按钮 -->
<div class="div_inline"><input type="button" value="-" class="tree_node_toggle_button"></div>

上面是按钮,下面是按钮的点击事件:

// 为所有的切换按钮添加点击事件
$(".tree_node_toggle_button").click(function () {
  // 获取需要隐藏或显示的节点
  var $toggle_node = $(this).parent().next().find(".tree_node_child");
  $toggle_node.toggle(); // 切换隐藏或显示
  // 切换按钮的显示
  if($toggle_node.is(":visible")){
    $(this).val("-");
  }else{
    $(this).val("+");
  }
});

简单说明一下逻辑就是,点击按钮后,切换子目录的隐藏或显示,然后根据子目录的隐藏或显示状态,来重新设置按钮的显示'+'或者'-'

3.全选/全不选

// 为所有的父节点添加点击事件
$(".tree_node_parent_checkbox").click(function(){
    // 获取父节点是否选中
    var isChange = $(this).prop("checked");
    if(isChange){ // 如果选中,则父节点下的所有的子节点都选中
      // 获取当前checkbox节点的兄弟节点下的所有的checkbox子节点选中
      $(this).next().find(".tree_node_child_checkbox").prop("checked", true);
    }else{ // 未选中,取消全选
      // 获取当前checkbox节点的兄弟节点下的所有的checkbox子节点选中
      $(this).next().find(".tree_node_child_checkbox").removeAttr("checked");
    }
});

这里特别注意一下,切换checkbox的选中要用prop()方法,不能用attr(),如果用attr()首次是不能出现我们需要的效果的。关于prop和attr的区别可以去官网查看prop介绍JQuery prop 。

4.选中子节点后父节点的相应变化状态

// 为所有的子节点添加点击事件
$(".tree_node_child_checkbox").click(function () {
    // 获取选中的节点的父节点下的所有子节点选中的数量
    var length = $(this).parent().find(".tree_node_child_checkbox:checked").length;
    // 判断当前结点是否选中
    if($(this).prop("checked")){ // 选中
      // 如果当前节点选中后,所有的选中节点数量1,选中父节点
      if(length == 1){
        // 选中父节点
        $(this).parent().prev().prop("checked", true);
      }
    }else{ // 节点未选中
      if(length == 0){
        // 取消父节点的选中状态
        $(this).parent().prev().removeAttr("checked");
      }
    }
});

主要的代码就是这么多,其实也没什么复杂的。

完整实例代码点击此处本站下载

希望本文所述对大家jQuery程序设计有所帮助。

jQuery 相关文章推荐
jQuery实现字体颜色渐变效果的方法
Mar 29 jQuery
jQuery实现动态生成表格并为行绑定单击变色动作的方法
Apr 17 jQuery
jQuery使用ajax_动力节点Java学院整理
Jul 05 jQuery
jQuery插件DataTables分页开发心得体会
Aug 22 jQuery
javaScript和jQuery自动加载简单代码实现方法
Nov 24 jQuery
jquery实现企业定位式导航效果
Jan 01 jQuery
jQuery实现图片上传预览效果功能完整实例【测试可用】
May 28 jQuery
jquery实现的简单轮播图功能【适合新手】
Aug 17 jQuery
jQuery.validate.js表单验证插件的使用代码详解
Oct 22 jQuery
jquery使用FormData实现异步上传文件
Oct 25 jQuery
jQuery实现模拟搜索引擎的智能提示功能简单示例
Jan 27 jQuery
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
Jan 29 jQuery
jquery实现自定义树形表格的方法【自定义树形结构table】
Jul 12 #jQuery
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
Jul 11 #jQuery
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
Jul 10 #jQuery
JavaScript实现的滚动公告特效【基于jQuery】
Jul 10 #jQuery
JavaScript前端页面搜索功能案例【基于jQuery】
Jul 10 #jQuery
jquery多级树形下拉菜单的实例代码
Jul 09 #jQuery
jQuery删除/清空指定元素的所有子节点实例代码
Jul 04 #jQuery
You might like
检测png图片是否完整的php代码
2010/09/06 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
2011/09/25 PHP
iis 7下安装laravel 5.4环境的方法教程
2017/06/14 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
Jquery数独游戏解析(一)-页面布局
2010/11/05 Javascript
Jquery公告滚动+AJAX后台得到数据
2011/04/14 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
2013/04/19 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
JavaScript制作windows经典扫雷小游戏
2015/03/31 Javascript
javascript生成随机数方法汇总
2015/11/12 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
jQuery实现的图片轮播效果完整示例
2016/09/12 Javascript
fullPage.js和CSS3实现全屏滚动效果
2017/05/05 Javascript
JS自定义滚动条效果简单实现代码
2020/10/27 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
微信小程序使用wxParse解析html的方法示例
2019/01/17 Javascript
[02:20]DOTA2亚洲邀请赛 IG战队出场宣传片
2015/02/07 DOTA
python 实现调用子文件下的模块方法
2018/12/07 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
Python中整数的缓存机制讲解
2019/02/16 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
Python利用WMI实现ping命令的例子
2019/08/14 Python
Python3实现配置文件差异对比脚本
2019/11/18 Python
前端面试必备之CSS3的新特性
2017/09/05 HTML / CSS
CSS3新属性transition-property transform box-shadow实例学习
2013/06/06 HTML / CSS
Laravel的加密解密与哈希实例讲解
2021/03/24 PHP
理财计划书
2014/08/14 职场文书
大学奖学金获奖感言
2014/08/15 职场文书
个人授权委托书
2014/09/15 职场文书
幼师大班个人总结
2015/02/13 职场文书
自我评价优缺点范文
2015/03/11 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
解决Mysql多行子查询的使用及空值问题
2022/01/22 MySQL