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 Validate 无法验证 chosen-select元素的解决方法
May 17 jQuery
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
May 19 jQuery
Jquery中attr与prop的区别详解
May 27 jQuery
jQuery实现键盘回车搜索功能
Jul 25 jQuery
简单实现jQuery上传图片显示预览功能
Jun 29 jQuery
jQuery实现的表格前端排序功能示例
Sep 18 jQuery
使用vue与jquery实时监听用户输入状态的操作代码
Sep 19 jQuery
jQuery+ajax实现批量删除功能完整示例
Jun 06 jQuery
基于jquery实现的tab选项卡功能示例【附源码下载】
Jun 10 jQuery
JavaScript前端页面搜索功能案例【基于jQuery】
Jul 10 jQuery
jQuery实现的上拉刷新功能组件示例
May 01 jQuery
Jquery滑动门/tab切换实现方法完整示例
Jun 05 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
ajax在joomla中的原生态应用代码
2012/07/19 PHP
php保存任意网络图片到服务器的方法
2015/04/14 PHP
javascript 对象定义方法 简单易学
2009/03/22 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
2016/10/24 Javascript
Bootstrap Modal遮罩弹出层(完整版)
2016/11/21 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
修改UA在PC中访问只能在微信中打开的链接方法
2017/11/27 Javascript
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
详解js动态获取浏览器或页面等容器的宽高
2019/03/13 Javascript
浅谈目前可以使用ES10的5个新特性
2019/06/25 Javascript
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
python通过邮件服务器端口发送邮件的方法
2015/04/30 Python
Python3安装Pymongo详细步骤
2017/05/26 Python
Python sorted函数详解(高级篇)
2018/09/18 Python
pycharm访问mysql数据库的方法步骤
2019/06/18 Python
python通过http下载文件的方法详解
2019/07/26 Python
python实现IOU计算案例
2020/04/12 Python
Python批量处理csv并保存过程解析
2020/05/16 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
详解canvas绘图时遇到的跨域问题
2018/03/22 HTML / CSS
哥伦比亚最大的网上商店:Linio哥伦比亚
2016/09/25 全球购物
NYX Professional Makeup英国官网:美国平价专业彩妆品牌
2019/11/13 全球购物
答谢会策划方案
2014/05/12 职场文书
高中升旗仪式演讲稿
2014/09/09 职场文书
CSS极坐标的实例代码
2021/06/03 HTML / CSS
Jedis操作Redis实现模拟验证码发送功能
2021/09/25 Redis
vue项目中的支付功能实现(微信支付和支付宝支付)
2022/02/18 Vue.js
win11怎么消除图标小盾牌?win11消除图标小盾牌解决方法
2022/08/05 数码科技