1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>全选练习</title>
6 </head>
7 <body>
8
9 <form>
10 你爱好的运动是?<input type="checkbox" id="checkedAllBox"/>全选/全不选
11
12 <br/>
13 <input type="checkbox" name="items" value="足球"/>足球
14 <input type="checkbox" name="items" value="篮球"/>篮球
15 <input type="checkbox" name="items" value="羽毛球"/>羽毛球
16 <input type="checkbox" name="items" value="乒乓球"/>乒乓球
17 <br/>
18 <input type="button" id="checkedAllBtn" value="全 选"/>
19 <input type="button" id="checkedNoBtn" value="全不选"/>
20 <input type="button" id="checkedRevBtn" value="反 选"/>
21 <input type="button" id="sendBtn" value="提 交"/>
22 </form>
23
24 <script src="js/jquery-1.10.1.js"></script>
25 <script type="text/javascript">
26 /*
27 功能说明:
28 1. 点击'全选': 选中所有爱好
29 2. 点击'全不选': 所有爱好都不勾选
30 3. 点击'反选': 改变所有爱好的勾选状态
31 4. 点击'全选/全不选': 选中所有爱好, 或者全不选中
32 5. 点击某个爱好时, 必要时更新'全选/全不选'的选中状态
33 6. 点击'提交': 提示所有勾选的爱好
34 */
35 // 获取全选全不选的复选框
36 var $checkedAllBox = $('#checkedAllBox');
37 // 获取所有爱好
38 var $items = $(':checkbox[name=items]');
39 //var $items= $(':checkbox').filter('[name=items]');
40
41
42 // 1. 点击'全选': 选中所有爱好
43 $('#checkedAllBtn').click(function () {
44 $items.prop('checked',true);
45 $checkedAllBox.prop('checked',true);
46 });
47
48 // 2. 点击'全不选': 所有爱好都不勾选
49 $('#checkedNoBtn').click(function () {
50 $items.prop('checked',false);
51 $checkedAllBox.prop('checked',false);
52 })
53
54
55 // 3. 点击'反选': 改变所有爱好的勾选状态
56 $('#checkedRevBtn').click(function () {
57 // 因为每个复选框当前的状态不同 所以需要单独判断每个的选中状态 不能使用隐式遍历
58 // 在each方法中 this指向当前每次拿出来的那个dom
59 $items.each(function () {
60 this.checked = !this.checked;
61 })
62 // 如果当前选中的复选框个数和总个数相等 就应该更新全选/全不选的状态为选中
63 // 获得选中的复选框集合
64 // var checkedList = $(':checkbox[name=items]:checked');
65 // if($items.length === checkedList.length){
66 //// 能进这个判断 就说明选中个数和总个数相等了 说明全选中
67 // $checkedAllBox.prop('checked',true);
68 // }else{
69 //// 到了else里边 说明不是全不选中
70 // $checkedAllBox.prop('checked',false);
71 // }
72 // $checkedAllBox.prop('checked',$items.filter(':checked').length === $items.length);
73 // 不选中的长度为0 也是全选
74 $checkedAllBox.prop('checked',$items.filter(':not(:checked)').length === 0);
75 });
76
77
78 // 5. 点击某个爱好时, 必要时更新'全选/全不选'的选中状态
79 $items.click(function () {
80 $checkedAllBox.prop('checked',$items.filter(':not(:checked)').length === 0);
81 });
82
83
84 // 4. 点击'全选/全不选': 选中所有爱好, 或者全不选中
85 $checkedAllBox.click(function () {
86 // 一旦点击了全选/全不选的这个按钮 它的状态就要设置给所有的爱好复选框
87 $items.prop('checked',this.checked);
88 });
89
90
91 // 6. 点击'提交': 提示所有勾选的爱好
92 $('#sendBtn').click(function () {
93 $items.filter(':checked').each(function () {
94 alert(this.value);
95 // alert($(this).val());
96 })
97 })
98
99
100 </script>
101 </body>
102
103 </html>