使用jquery的方法和技巧2,点击多选框的jquery响应

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

功能描述:

1、第一层

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

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

第一层的逻辑如下:

2、第二层

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

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

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

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

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

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

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

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

第二层的逻辑如下:

第三层:

分析略。

逻辑见图

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

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

1、ThinkPHP中部署的html

 1 <foreach name="node" item="app">
 2         <div class="app">
 3             <p>
 4                 <label style="cursor:pointer" for="app_{$app.id}_1">
 5                     <strong>{$app.title}</strong>
 6                     <input type="checkbox" name="access[]" id="app_{$app.id}_1" value="{$app.id}_1" level="1" />
 7                 </label>
 8             </p>
 9
10             <span class="action">
11             <foreach name="app.child" item="action">
12                 <dl>
13                     <dt>
14                         <label style="cursor:pointer" for="action_{$action.id}_2">
15                             <strong>{$action.title}</strong>
16                             <input type="checkbox" name="access[]" id="action_{$action.id}_2" value="{$action.id}_2" level="2" />
17                         </label>
18                     </dt>
19
20                     <span class="method">
21                     <foreach name="action.child" item="method">
22                         <dd>
23                             <label style="cursor:pointer" for="method_{$method.id}_3">
24                                 <span>{$method.title}</span>
25                                 <input type="checkbox" name="access[]" id="method_{$method.id}_3" value="{$method.id}_3"  level="3" />
26                             </label>
27                         </dd>
28                     </foreach>
29                     </span>
30
31                 </dl>
32             </foreach>
33             </span>
34
35         </div>
36     </foreach>

html代码

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

 1         <script type="text/javascript" src="__PUBLIC__/js/jquery-1.7.2.min.js"></script>
 2
 3         <script type="text/javascript">
 4
 5 //这里面使用jquery的方法
 6             $(function(){
 7                 $(‘input[level=1]‘).click(function(){
 8                     var inputs_all=$(this).parents(‘div.app‘).find(‘input‘);
 9                     if ($(this).attr(‘checked‘)=="checked") {
10                         inputs_all.attr(‘checked‘,‘checked‘);
11                     }else{
12                         inputs_all.removeAttr(‘checked‘);
13                     }
14                 });
15
16                 $(‘input[level=2]‘).click(function(){
17                     var all_born_children=$(this).parents(‘dt‘).next(‘span.method‘).find(‘input‘);
18                     var born_parent=$(this).parents(‘span.action‘).prev().find(‘input‘);
19                     var born_brothers=$(this).parents(‘dl‘).siblings().children(‘dt‘).find(‘input‘);
20
21
22 //                    var tbody = "";//调试代码
23                     var cunzai2=0;
24                         $.each(born_brothers,function(n,value){
25
26                             if(value.checked==true){
27                                 cunzai2++;
28                             }
29                             //alert(n+‘ ‘+value);//调试代码
30 //                            var trs = "";//调试代码
31 //                            trs += "<tr><td>" + value.checked +cunzai2+ "</td></tr>";//调试代码
32 //                            tbody += trs;//调试代码
33
34                         });
35 //                            $("#project").append(tbody);//调试代码
36
37
38                     if ($(this).attr(‘checked‘)=="checked") {
39                         all_born_children.attr(‘checked‘,‘checked‘);
40                         born_parent.attr(‘checked‘,‘checked‘);
41                     }else{
42                         all_born_children.removeAttr(‘checked‘);
43                         if (cunzai2==0) {
44                             born_parent.removeAttr(‘checked‘);
45                         }else{
46                             born_parent.attr(‘checked‘,‘checked‘);
47                         }
48                     }
49
50                 });
51
52                 $(‘input[level=3]‘).click(function(){
53                     var born_father=$(this).parents(‘span.method‘).prev().find(‘input‘);
54                     var born_grandpa=$(this).parents(‘span.action‘).prev().find(‘input‘);
55                     var born_brother=$(this).parents(‘dd‘).siblings().find(‘input‘);
56                     var born_uncle=$(this).parents(‘dl‘).siblings().children(‘dt‘).find(‘input‘);
57                     //判断兄弟节点是否被选中
58                     var cunzai3_1=0;
59                     $.each(born_brother,function(n,value){
60                         if(value.checked==true){
61                             cunzai3_1++;
62                         }
63                     });
64                     //判断叔伯节点是否被选中
65                     var cunzai3_2=0;
66                     $.each(born_uncle,function(n,value){
67                         if(value.checked==true){
68                             cunzai3_2++;
69                         }
70                     });
71
72                     if ($(this).attr(‘checked‘)=="checked") {
73                         born_father.attr(‘checked‘,‘checked‘);
74                         born_grandpa.attr(‘checked‘,‘checked‘);
75                     }else{
76                         if (cunzai3_1!=0) {
77                             born_father.attr(‘checked‘,‘checked‘);
78                             born_grandpa.attr(‘checked‘,‘checked‘);
79                         }else{
80                             born_father.removeAttr(‘checked‘);
81                             if (cunzai3_2==0) {
82                                 born_grandpa.removeAttr(‘checked‘);
83                             }else{
84                                 born_grandpa.attr(‘checked‘,‘checked‘);
85                             }
86
87                         }
88                     }
89
90                 });
91
92             });
93         </script>

jquery为主的代码

完。

时间: 2024-12-05 22:22:52

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

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

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

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

体验效果:http://keleyi.com/keleyi/phtml/jqtexiao/31.htm 代码如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>jquery点击复选框触发事件给input赋值-柯乐义</title><base target="_blank" /> <sty

使用jquery的方法和技巧

1.下载一个jquery.js的文件 2.引入jquery.js文件 1 <script type="text/javascript" src="__PUBLIC__/js/jquery-1.7.2.min.js"></script> 2 <script type="text/javascript"> 3 $(function(){ 4 5 //这里面使用jquery的方法 6 7 8 }); 9 </s

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

今天又次体会到jquery的强大了,做了个多级复选框的效果,代码总共就20+行就over了. 我又想用js来做一个看看,才写了几个方法就写不动了,兼容性要考虑很多,而且代码量直线上升. 主要分享下jquery的这个效果的实现.代码块分两块: 一是全选的效果,就是点击全选的复选框时它的子孙都相应被选中或者未选中.这个很好做,代码如下: evtEle.parent().next(".checks").find("input:checkbox").attr("c

jQuery.ajax()方法中参数详细解析

前言 在项目开发中,为了实现异步向服务端发起请求,最经常使用的就是jQuery.ajax方法了.刚开始需求比较简单,调用jQuery.ajax方法时要传的参数也就那几个常见的参数:url/data/dataType/type/cache/timeout.当时感觉这个接口使用起来很简单,直到最近项目中要实现一个发送 formData数据到服务端的需求时,我发现自己错了....原来jQuery.ajax方法中除了我用过的那几个外,还有如此之多!!于是我决定要去jQuery官网好好看看都有哪些我不知道

复选框的全选(引自锋利的jQuery)

1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta name="generator" content="text/html" charset="utf-8" /> 5 <title>复选框组的全选/非全选</title> 6 <script

jQuery——操作复选框(checkbox) attr checked不起作用

这天用到jQuery功能,想实现一个简单的复选框动态全选或全不选,结果测试发现 attr('checked','checked');与attr('checked',true); 都不好使,要么第一次成功了,第二次调用就没反应,完全不起作用了.那到底是什么原因呢? 害得'跑客教授'到处到网上搜 jQuery checkbox的操作,动态选择的相关文章,都写着是这样的实现代码 $('input[type=checkbox]').attr('checked','checked');//全选,设置属性

jQuery 操作复选框(checkbox) attr checked不起作用

jQuery 更改checkbox的状态,无效 $(this).attr("checked", false).checkboxradio("refresh");     //应该这么写吧,少了$这个东东~~~跟js混淆了 jQuery 操作复选框(checkbox) attr checked不起作用 这 天用到jQuery功能,想实现一个简单的复选框动态全选或全不选,结果测试发现 attr(‘checked’,'checked’);与attr(‘checked’,t

jQuery复选框全选/取消全选

jQuery复选框 注意jquery版本的更新兼容问题 使用兼容1.6+所有版本 $("#selAll").on("click", function () { if($("#selAll").prop("checked") == true){ $("input[id='iid']").each(function(){ $(this).prop("checked", true); });