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插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
Mar 28 jQuery
jquery append与appendTo方法比较
May 24 jQuery
jQuery复合事件结合toggle()方法的用法示例
Jun 10 jQuery
jQuery 实时保存页面动态添加的数据的示例
Aug 14 jQuery
jQuery实现所有验证通过方可提交的表单验证
Nov 21 jQuery
关于jquery中attr()和prop()方法的区别
May 28 jQuery
使用jquery DataTable和ajax向页面显示数据列表的方法
Aug 09 jQuery
jQuery实现获取当前鼠标位置并输出功能示例
Jan 05 jQuery
Jquery获取radio选中值实例总结
Jan 17 jQuery
详解如何使用webpack打包多页jquery项目
Feb 01 jQuery
jQuery AJAX应用实例总结
May 19 jQuery
jQuery弹框插件使用方法详解
May 26 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
巧用php中的array_filter()函数去掉多维空值的代码分享
2012/09/07 PHP
php查找字符串出现次数的方法
2014/12/01 PHP
100多行PHP代码实现socks5代理服务器[2]
2016/05/05 PHP
PHP构造函数与析构函数用法示例
2016/09/28 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
2016/12/12 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
XP折叠菜单&amp;仿QQ2006菜单
2006/12/16 Javascript
IE不支持getElementsByClassName最终完美解决方案
2012/12/17 Javascript
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
学习JavaScript设计模式(接口)
2015/11/26 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
jQuery实现根据滚动条位置加载相应内容功能
2016/07/18 Javascript
JavaScript数据结构学习之数组、栈与队列
2017/05/02 Javascript
AngularJS  ng-repeat遍历输出的用法
2017/06/19 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
2017/11/15 Javascript
Vue-router 中hash模式和history模式的区别
2018/07/24 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
2018/09/30 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
JavaScript的console命令使用实例
2019/12/03 Javascript
Vue组件基础用法详解
2020/02/05 Javascript
vue fetch中的.then()的正确使用方法
2020/04/17 Javascript
python开启多个子进程并行运行的方法
2015/04/18 Python
python组合无重复三位数的实例
2018/11/13 Python
python plotly画柱状图代码实例
2019/12/13 Python
小学生开学感言
2014/02/28 职场文书
学习型党组织建设经验材料
2014/05/26 职场文书
销售类求职信
2014/06/13 职场文书
党建工作整改措施
2014/10/28 职场文书
化工见习报告范文
2014/10/31 职场文书
爱国影片观后感
2015/06/18 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书
关于Python使用turtle库画任意图的问题
2022/04/01 Python