使用jquery来控制多选框的变化

功能描述:

1、第一层

当选中后台应用(App1)时,所有多选框都被选择。

当取消选中后台应用(App1)时,所有多选框都被取消选择。

第一层的逻辑如下:

2、第二层

a.对所有亲子多选框而言

当选择帖子管理(控制器Action02)时,所有亲子多选框被选择。

当取消选择帖子管理(控制器Action02)时,所有亲子多选框被取消选择。

b.对亲父级多选框:后台应用(App1)而言

当选择帖子管理(控制器Action02)时,亲父App多选框被选择。

当取消选择帖子管理(控制器Action02)时,

1)如果亲兄Action有被选中的,亲父App多选框被选择。

2)如果亲兄Action没有被选中的,亲父App多选框被取消选择。

第二层的逻辑如下:

第三层:

分析略。

逻辑见图

==========================思路如上==========================

==========================代码如下==========================

1、ThinkPHP中部署的html

 <foreach name="node" item="app">
<div class="app">
<p>
<label style="cursor:pointer" for="app_{$app.id}_1">
<strong>{$app.title}</strong>
<input type="checkbox" name="access[]" id="app_{$app.id}_1" value="{$app.id}_1" level="1" />
</label>
</p> <span class="action">
<foreach name="app.child" item="action">
<dl>
<dt>
<label style="cursor:pointer" for="action_{$action.id}_2">
<strong>{$action.title}</strong>
<input type="checkbox" name="access[]" id="action_{$action.id}_2" value="{$action.id}_2" level="2" />
</label>
</dt> <span class="method">
<foreach name="action.child" item="method">
<dd>
<label style="cursor:pointer" for="method_{$method.id}_3">
<span>{$method.title}</span>
<input type="checkbox" name="access[]" id="method_{$method.id}_3" value="{$method.id}_3" level="3" />
</label>
</dd>
</foreach>
</span> </dl>
</foreach>
</span> </div>
</foreach>

html代码

2、html的头部标签中部署的jquery代码

         <script type="text/javascript" src="__PUBLIC__/js/jquery-1.7.2.min.js"></script>

         <script type="text/javascript">

 //这里面使用jquery的方法
$(function(){
$('input[level=1]').click(function(){
var inputs_all=$(this).parents('div.app').find('input');
if ($(this).attr('checked')=="checked") {
inputs_all.attr('checked','checked');
}else{
inputs_all.removeAttr('checked');
}
}); $('input[level=2]').click(function(){
var all_born_children=$(this).parents('dt').next('span.method').find('input');
var born_parent=$(this).parents('span.action').prev().find('input');
var born_brothers=$(this).parents('dl').siblings().children('dt').find('input'); // var tbody = "";//调试代码
var cunzai2=0;
$.each(born_brothers,function(n,value){ if(value.checked==true){
cunzai2++;
}
//alert(n+' '+value);//调试代码
// var trs = "";//调试代码
// trs += "<tr><td>" + value.checked +cunzai2+ "</td></tr>";//调试代码
// tbody += trs;//调试代码 });
// $("#project").append(tbody);//调试代码 if ($(this).attr('checked')=="checked") {
all_born_children.attr('checked','checked');
born_parent.attr('checked','checked');
}else{
all_born_children.removeAttr('checked');
if (cunzai2==0) {
born_parent.removeAttr('checked');
}else{
born_parent.attr('checked','checked');
}
} }); $('input[level=3]').click(function(){
var born_father=$(this).parents('span.method').prev().find('input');
var born_grandpa=$(this).parents('span.action').prev().find('input');
var born_brother=$(this).parents('dd').siblings().find('input');
var born_uncle=$(this).parents('dl').siblings().children('dt').find('input');
//判断兄弟节点是否被选中
var cunzai3_1=0;
$.each(born_brother,function(n,value){
if(value.checked==true){
cunzai3_1++;
}
});
//判断叔伯节点是否被选中
var cunzai3_2=0;
$.each(born_uncle,function(n,value){
if(value.checked==true){
cunzai3_2++;
}
}); if ($(this).attr('checked')=="checked") {
born_father.attr('checked','checked');
born_grandpa.attr('checked','checked');
}else{
if (cunzai3_1!=0) {
born_father.attr('checked','checked');
born_grandpa.attr('checked','checked');
}else{
born_father.removeAttr('checked');
if (cunzai3_2==0) {
born_grandpa.removeAttr('checked');
}else{
born_grandpa.attr('checked','checked');
} }
} }); });
</script>

jquery为主的代码

完。

使用jquery的方法和技巧2,点击多选框的jquery响应的更多相关文章

  1. jquery点击复选框触发事件给input赋值

    体验效果:http://keleyi.com/keleyi/phtml/jqtexiao/31.htm 代码如下: <!DOCTYPE html> <html xmlns=" ...

  2. 使用jquery的方法和技巧

    1.下载一个jquery.js的文件 2.引入jquery.js文件 <script type="text/javascript" src="__PUBLIC__/ ...

  3. 【六】jquery之HTML代码/文本/值[下拉列表框、多选框、单选框的选中]

    val()方法不仅能设置元素的值,同时也能获取元素的值.另外,val()方法还有另外一个用处,就是它能使select(下拉列表框).checkbox(多选框)和radio(单选框)相应的选项被选中,在 ...

  4. 模拟多级复选框效果--jquery

    今天又次体会到jquery的强大了,做了个多级复选框的效果,代码总共就20+行就over了. 我又想用js来做一个看看,才写了几个方法就写不动了,兼容性要考虑很多,而且代码量直线上升. 主要分享下jq ...

  5. jquery中attr和prop的区别—判断复选框选中状态

    最近项目中需要用jquery判断input里checkbox是否被选中,发现用attr()获取不到复选框改变后的状态,最后查资料发现jQuery 1.6以后新增加了prop()方法,借用官方的一段描述 ...

  6. jquery 循环获取checkBox的值,以及对复选框选中,取消,操作按钮

    法一:jquery 循环获取选中checkBox框的值 function checkeds() { $("input:checkbox").each(function(index) ...

  7. jQuery v1.10.2如何判断checkbox(复选框)是否被选中

    做项目时,我们经常会用到jquery来做一些判断,今天自己遇上判断复选框是否选中,然后搜索查看,发现现在网上的都是错误的,下面罗列错误的: 1.$("#id").attr(&quo ...

  8. jquery easyui datagraid 对象显示的方法与datagraid、分页、复选框多选的数据显示

    ========================jsp==============================<table id="dg" fit="true& ...

  9. 【jQuery学习】用JavaScript写一个输出多选框的个数报错:Cannot set property 'onclick' of null"

    说明:代码段来源于:<锋利的jQuery> 根据代码段我补充的代码如下: <!DOCTYPE html> <html> <head> <meta ...

随机推荐

  1. Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)

    第一讲     File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作 3)File类的实例是不 ...

  2. SSM框架整合,以CRM为例子

          Mybatis.SpringMVC练习   CRM系统         回顾 Springmvc  高级参数绑定  数组  List <input type  name=ids /& ...

  3. 使用jquery.form.js提交表单上传文件

    方法: 1.formSerilize()  用于序列化表单中的数据,并将其自动整理成适合AJAX异步请求的URL地址格式. 2.clearForm()   清除表单中所有输入值的内容. 3.restF ...

  4. mac 终端常用目录跳转命令

    以前一直都是使用Windows系统,连命令行都没怎么用过.来到了Mac,在某位大神的诱导下,我开始尝试使用Mac Terminal,下面总结的是一些简单的目录跳转命令  (菜鸟级) .  文件目录 首 ...

  5. 《Java从入门到放弃》JavaSE入门篇:异常

    异常!!!看看生活中的异常例子: 正常情况下,从家到公司上班,只需要20分钟!但如果在路上碰到堵车或修路或车突然自燃等问题,那就没办法正常去上班了.其中堵车或修路或车突然自燃等问题就属于异常. 碰到异 ...

  6. 多线程编程学习四(Lock 的使用).

    一.前言 本文要介绍使用Java5中 Lock 对象,同样也能实现同步的效果,而且在使用上更加方便.灵活,主要包括 ReentrantLock 类的使用和ReentrantReadWriteLock ...

  7. 新CCIE笔记-路由器的配置

    CCIE重修笔记之路由器基本配置与最简单的路由. 路由器与交换机的基本配置命令 全局配置模式下有多种子模式 (华为可以跳跃切换模式) 思科命令行技巧 Tab键补全,也可以直接保留缩写 问号'?'类似l ...

  8. CSS基础知识摘要

    元素分类 块级元素 什么是块级元素?在html中<div>. <p>.<h1>.<form>.<table>.<ul> 和 &l ...

  9. 第二次项目冲刺(Beta阶段)5.24

    1.提供当天站立式会议照片一张 会议内容: ①检查前一天的任务情况. ②制定新一轮的任务计划. 2.每个人的工作 (1)工作安排 队员 今日进展 明日安排 王婧 #63Web输出以文件名为标题 #63 ...

  10. 201521123061 《Java程序设计》第六周学习总结

    201521123061 <Java程序设计>第六周学习总结 ***代码阅读:Child压缩包内 1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核 ...