使用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. WPF蒙板弹窗

    由于界面设计需要,要给弹窗添加蒙板效果,在百度和google搜索了半天,竟然没有一个满意的方案,最后只能自己想办法实现了一个,原理还是比较简单的,现在分享给大家. 先看一下效果..      原理其实 ...

  2. javaSE基础之 ArrayList的底层简单实现

    最近就是想扒一扒存在硬盘里面的学习资料(突然想到什么),把以前写过的一些东西整理一下分享出来. 这边是ArrayList 的简单实现,当然只实现了部分方法 package com.yck.collec ...

  3. switch实现一个两数的运算

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. jquery.tmplate使用心得

    jquery.tmplate使用心得 jquery.tmpl.js,是与jquey共同使用的html模板插件.该插件可通过简单的语法将数据放入到html模板中,可以很好的将数据渲染到页面上.该插件在本 ...

  5. Cython的用法以及填坑姿势

    因为项目需要,需要优化已有的Python代码.目前Python代码的执行过程是将Python代码转变成一行行指令,然后解释器解释指令的执行,调用到C代码层.如果去掉指令解释这个阶段,直接进入C代码层, ...

  6. node.js 89行爬虫爬取智联招聘信息

    写在前面的话, .......写个P,直接上效果图.附上源码地址  github/lonhon ok,正文开始,先列出用到的和require的东西: node.js,这个是必须的 request,然发 ...

  7. 移动端踩坑之旅-ios下fixed、软键盘相关问题总结

    最近一个项目掉进了移动端的大坑,包括ios下fixed布局,h5唤起键盘等问题,作为一个B端程序员,弱项就是浏览器的兼容性和移动端的适配(毕竟我们可以要求使用chrome),还好这次让我学习了一下相关 ...

  8. .NET技术基础总结 ----第一章

    . 一..NET定义 很多人常说我是做.NET开发的,但是,NET到底是什么呢?是一个开发工具?还是一个平台?或者是一个软件环境? 其实,我觉得吧,他是一种概念.一种构想吧.微软的产品发布会上,主持人 ...

  9. Day-10: 错误、调试和测试

    程序运行时,会遇到各种各样的错误. 编写错误叫做bug,而另一类由于运行过程中无法预测的,比如写文件时,磁盘满了,写不进去:或者从网络抓取数据,网络突然掉了.这些错误称为异常,程序中需要对异常进行处理 ...

  10. 【★】深入BGP原理和思想【第一部】

    前言:学思科技术我想说,浅尝辄止,不是天才千万别深钻.和我研究高等数学一样,越深入就会发现越多的问题与不合理之处.尤其对于IT界,算法的最终解释权还是掌握在老外手中,所以对于有些细节,我们" ...