在网页制作中,三级关联选择经常遇到,于是归纳了一个进行参考

代码如下:

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script>
$(function(){
var Ocheckall = $('.type1'); // 获取全选元素
var Acheck_class1 = $('.type2');// 获取第一类选择元素
var Acheck_class3 = $('.type3');// 获取第二类选择元素
var Aquanbu = $('input'); // 所有选择元素集合
Ocheckall.on('click',function(){
Aquanbu.prop('checked',$(this).prop('checked')); // 获取当前全选元素的checked 属性值,将所有元素的checked 属性设置为这个值
});
Acheck_class1.on('click',function(){
$(this).parents('.box1').find('.type3').prop('checked',$(this).prop('checked')); // 获取当前元素的checked 属性值,将这个元素形式上的子类checked 属性设置为获取到的属性值
Acheck_class1.parent().find(':checked').length == Acheck_class1.length ? Ocheckall.prop('checked',true) : Ocheckall.prop('checked',false); // 判断第一类元素的已经选择的数量与第一类元素本身的个数是否相同,如果相同,则将全选元素设置为选中状态,否则设置为未选中状态
});
Acheck_class3.on('click',function(){
var curentlen = $(this).parents('.box2').find(':checked').length; // 获取当前第二类选择元素的选中的个数
var alen = $(this).parents('.box2').find('.type3').length; // 获取当前第二类选择元素的本身的个数
var Oyilei = $(this).parents('.box1').find('.type2'); // 获取当前选择元素的上级(形式上的)第一类选择元素
curentlen == alen ? Oyilei.prop('checked',true) : Oyilei.prop('checked',false); // 判断当前第二类选择元素的已经选择的个数与本身选择元素的个数是否相同,如果相同,则将 当前选择元素的上级(形式上的)第一类选择元素 的checked 属性设置为true,否则设置为false
Acheck_class1.parent().find(':checked').length == Acheck_class1.length ? Ocheckall.prop('checked',true) : Ocheckall.prop('checked',false); // 判断第一类元素的已经选择的数量与第一类元素本身的个数是否相同,如果相同,则将全选元素设置为选中状态,否则设置为未选中状态
});
});
</script>
</head>
<body>
<ul class="box">
<li><input type="checkbox" class="type1">全部 </li>
<ul class="box1">
<li> <input type="checkbox" class="type2">第一类 </li>
<ul class="box2">
<li> <input type="checkbox" class="type3">第1个 </li>
<li> <input type="checkbox" class="type3">第2个 </li>
<li> <input type="checkbox" class="type3">第3个 </li>
<li> <input type="checkbox" class="type3">第4个 </li>
</ul>
</ul>
<ul class="box1">
<li> <input type="checkbox" class="type2">第二类 </li>
<ul class="box2">
<li> <input type="checkbox" class="type3">第1个 </li>
<li> <input type="checkbox" class="type3">第2个 </li> </ul>
</ul>
<ul class="box1">
<li> <input type="checkbox" class="type2">第三类 </li>
<ul class="box2">
<li> <input type="checkbox" class="type3">第1个 </li>
<li> <input type="checkbox" class="type3">第2个 </li>
<li> <input type="checkbox" class="type3">第3个 </li>
</ul>
</ul>
<ul class="box1">
<li> <input type="checkbox" class="type2">第四类 </li>
<ul class="box2">
<li> <input type="checkbox" class="type3">第1个 </li>
<li> <input type="checkbox" class="type3">第2个 </li>
<li> <input type="checkbox" class="type3">第3个 </li>
<li> <input type="checkbox" class="type3">第4个 </li>
</ul>
</ul>
</ul>
</body>
</html>

运行结果:

备注:在代码中,获取元素的checked 属性值,用的函数是 prop() ,而不是attr();当然这两个函数都可以进行checked 设定,但是还是有一些差异的,可能会导致错误,如下:

// prop与attr在获取未选中状态时,返回值是不同的
// 如果是选中的 attr ----> checked, 如果没选中 attr -----> undefined
// 如果是选中的 prop ----> true, 如果没选中 prop -----> false

jquery 三级关联选择效果的更多相关文章

  1. asp.net mvc中使用jquery H5省市县三级地区选择控件

    地区选择是项目开发中常用的操作,本文讲的控件是在手机端使用的选择控件,不仅可以用于实现地区选择,只要是3个级别的选择都可以实现,比如专业选择.行业选择.职位选择等.效果如下图所示: 附:本实例asp. ...

  2. 利用select实现年月日三级联动的日期选择效果

    × 目录 [1]演示 [2]规划 [3]结构生成[4]算法处理 前面的话 关于select控件,可能年月日三级联动的日期选择效果是最常见的应用了.本文是选择框脚本的实践,下面将对日期选择效果进行详细介 ...

  3. jquery仿淘宝规格颜色选择效果

    jquery实现的仿淘宝规格颜色选择效果源代码如下 jquery仿淘宝规格颜色选择效果 -收缩HTML代码 运行代码 [如果运行无效果,请自行将源代码保存为html文件运行] <script t ...

  4. 使用 Sticky-Kit 实现基于 jQuery 的元素固定效果

    元素固定效果在网页中应用得很多,比较常见的使用场景有改进导航,显示广告.Sticky-Kit 是一个非常方便的 jQuery 插件,简化了创建/管理粘元素,有复杂的使用功能.这些功能包括:处理多个固定 ...

  5. 推荐20款基于 jQuery & CSS 的文本效果插件

    jQuery 和 CSS 可以说是设计和开发行业的一次革命.这一切如此简单,快捷的一站式服务.jQuery 允许你在你的网页中添加一些真正令人惊叹的东西而不用付出很大的努力,要感谢那些优秀的 jQue ...

  6. FancySelect – 更好用的 jQuery 下拉选择框插件

    FancySelect 这款插件是 Web 开发中下拉框功能的一个更好的选择.FancySelect 使用方便,只要绑定页面上的任何 Select 元素,并调用就 .fancySelect() 就可以 ...

  7. jquery Jquery 遍历 获取设置 效果

    speed: slow fast 毫秒 隐藏 显示 $(selector).hide(speed,callback) 隐藏. $(selector).show(speed,callback) 显示 $ ...

  8. js下拉框二级关联菜单效果代码具体实现

    这篇文章介绍了js下拉框二级关联菜单效果代码具体实现,有需要的朋友可以参考一下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ...

  9. jQuery取得select选择的文本与值

    jquery获取select选择的文本与值获取select :获取select 选中的 text :$("#ddlregtype").find("option:selec ...

随机推荐

  1. 笨鸟先飞之ASP.NET MVC系列之过滤器(06异常过滤器)

    概念介绍 异常过滤器主要在我们方法中出现异常的时候触发,一般我们用 异常过滤器 记录日志,或者在产生异常时做友好的处理 如果我们需要创建异常过滤器需要实现IExceptionFilter接口. nam ...

  2. Unix英雄传:图文细数十五位计算机先驱

    Unix,一款多任务多用户操作系统,最早由AT&T公司员工及合作伙伴在贝尔实验室于1969年开发完成.Unix的衍生及克隆版本包括Berkeley Unix.Minix.Linux.AIX.A ...

  3. Java反射机制(Reflect)解析

    一.导读 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计 ...

  4. asp中日志方法

    代码文件log.asp中内容如下: <% Function getPath() getPath = request.servervariables("APPL_PHYSICAL_PAT ...

  5. web.xml中<init-param>报错

    报错信息如下图: 控制台报错:严重: Servlet /*** threw load() exceptionjava.lang.ClassNotFoundException: MyApplicatio ...

  6. Supervised Learning and Unsupervised Learning

    Supervised Learning In supervised learning, we are given a data set and already know what our correc ...

  7. Spring-SpringMVC-Mybatis整合的步骤

    1.导入jar包 1.1  spring面向切面jar包 com.springsource.net.sf.cglib-2.2.0.jar com.springsource.org.aopallianc ...

  8. 关于mysql的临时表并行的问题

    mysql的临时表并行是没问题的 以为临时表是基于会话的 1.因为在mysql里面每个会话的sessionid 不一样 2.其实就是会话级别的临时表  DB2里面有会话级别 全局级别的临时表,Orac ...

  9. Problem V

    Problem Description The aspiring Roy the Robber has seen a lot of American movies, and knows that th ...

  10. replace to

    要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据. MySQL replace into 有三种形式: 1. repla ...