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 相关文章推荐
原生Aajax 和jQuery Ajax 写法个人总结
Mar 24 jQuery
jQuery层级选择器_动力节点节点Java学院整理
Jul 04 jQuery
jQuery实现的简单前端搜索功能示例
Oct 28 jQuery
jquery animate动画持续运动的实例
Nov 29 jQuery
jquery如何实现点击空白处隐藏元素
Dec 05 jQuery
jQuery实现的下雪动画效果示例【附源码下载】
Feb 02 jQuery
vue.js2.0点击获取自己的属性和jquery方法
Feb 23 jQuery
JQuery元素快速查找与操作
Apr 22 jQuery
通过jquery toggleClass()属性制作文章段落更改背景颜色
May 21 jQuery
详解JQuery基础动画操作
Apr 12 jQuery
JQuery 实现文件下载的常用方法分析
Oct 29 jQuery
jquery实现图片无缝滚动 蒙版遮蔽效果
Jan 11 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
第十二节--类的自动加载
2006/11/16 PHP
php设置编码格式的方法
2013/03/05 PHP
php提高网站效率的技巧
2015/09/29 PHP
合格的PHP程序员必备技能
2015/11/13 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
PHP下载大文件失败并限制下载速度的实例代码
2019/05/10 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
2012/03/01 Javascript
jquery获取子节点和父节点的示例代码
2013/09/10 Javascript
jquery 按键盘上的enter事件
2014/05/11 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
js使用onmousemove和onmouseout获取鼠标坐标的方法
2015/03/31 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
2016/06/07 Javascript
uploadify插件实现多个图片上传并预览
2019/09/30 Javascript
vue h5移动端禁止缩放代码
2019/10/28 Javascript
python中sleep函数用法实例分析
2015/04/29 Python
Python3多线程爬虫实例讲解代码
2018/01/05 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
使用python Fabric动态修改远程机器hosts的方法
2018/10/26 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
2019/09/20 Python
Python统计文本词汇出现次数的实例代码
2020/02/27 Python
Python编程快速上手——正则表达式查找功能案例分析
2020/02/28 Python
python3实现简单飞机大战
2020/11/29 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
中药专业大学生医药工作求职信
2013/10/25 职场文书
师范大学应届生求职信
2013/11/21 职场文书
活动总结报告怎么写
2014/07/03 职场文书
五心教育心得体会
2014/09/04 职场文书
三八妇女节致辞
2015/07/31 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
python process模块的使用简介
2021/05/14 Python
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
2022/04/06 Python
python如何利用cv2.rectangle()绘制矩形框
2022/12/24 Python