使用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. Apache与Tomcat的关系和区别 -个人比较

    我们经常在用apache和tomcat等这些服务器,可是总感觉还是不清楚他们之间有什么关系,在用tomcat的时候总出现apache,总感到迷惑,到底谁是主谁是次,因此特意在网上查询了一些这方面的资料 ...

  2. Sass之Compass学习笔记

    compass Compass是Sass的工具库,就好像jQuery是js的库一样. sass有了compass的配合,就会更加事半功倍. Sass本身只是一个编译器,Compass在它的基础上,封装 ...

  3. 简单易上手的Bootstrap

    什么是Bootstrap? Bootstrap是一个web框架.Bootstrap,来自 Twitter,是目前很受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT ...

  4. [2014-02-23]Asp.net Mvc分布式Session存储方案

    要玩集群的时候,怎么处理会话状态Session? InProc模式的sessionState是不能用了,因为这是在web服务器本机进程里的,会造成各节点数据不一致.除非在分流的时候用ip hash策略 ...

  5. web安全普及:通俗易懂,如何让网站变得更安全?以实例来讲述网站入侵原理及防护。

    本篇以我自己的网站[http://www.1996v.com]为例来通俗易懂的讲述如何防止网站被入侵,如何让网站更安全. 要想足够安全,首先得知道其中的道理. 本文例子通俗易懂,从"破解网站 ...

  6. QT creator编程C++第一步,说“Hello world!”

    这个学期选了计算机学院的<数字图像处理>,正好和我的图像识别项目有所关联,老师说不能用MATLAB来做,这让我一个没学过C++的孩纸欲哭无泪. 只好求助计算机学院的大佬,自学C++. 大佬 ...

  7. CSS3四个自适应关键字——fill-available、max-content、min-content、fit-content

    前面的话 一般地,有两种自适应:撑满空闲空间与收缩到内容尺寸.CSS3将这两种情况分别定义为'fill-availabel'和'fit-content'.除此之外 ,还新增了更细粒度的'min-con ...

  8. RMI和socket详解

    详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp58   一般来说,基于CS(client-server)软件架构的开发技 ...

  9. 对于c语言存储分配程序(malloc函数)实现的理解

    内容主要出自<The C Programming Language>一书,不得不说这是一本程序员必读的书,我大二读了前面几章就扔到一边了,直到最近才又拿起来再读,找不到言语来形容我现在后悔 ...

  10. 查看linux网卡硬件名称

    查看linux网卡硬件名称 lspci | grep -i ether