摘要:当勾选全选按钮旁边的复选框时,列表中的选项全部选中,反之取消勾选则列表中的选项全部为未选中状态。全选或全不选全选全不选反选设置全选复选框获取选中选项的值选项总个数全选不全选
HTML
我们的页面上有一个歌曲列表,列出多行歌曲名称,并匹配复选框供用户选择,并且在列表下方有一排操作按钮。
?1 2 3 4 5 6 7 8 9 10 11 12 13 |
< ul id = "list" >
< li >< label >< input type = "checkbox" value = "1" > 1.时间都去哪儿了 label > li >
< li >< label >< input type = "checkbox" value = "2" > 2.海阔天空 label > li >
< li >< label >< input type = "checkbox" value = "3" > 3.真的爱你 label > li >
< li >< label >< input type = "checkbox" value = "4" > 4.不再犹豫 label > li >
< li >< label >< input type = "checkbox" value = "5" > 5.光辉岁月 label > li >
< li >< label >< input type = "checkbox" value = "6" > 6.喜欢妳 label > li >
ul >
< input type = "checkbox" id = "all" >
< input type = "button" value = "全选" class = "btn" id = "selectAll" >
< input type = "button" value = "全不选" class = "btn" id = "unSelect" >
< input type = "button" value = "反选" class = "btn" id = "reverse" >
< input type = "button" value = "获得选中的所有值" class = "btn" id = "getValue" >
|
jQuery插件
1、全选或全不选。当勾选全选按钮#selectAll旁边的复选框#all时,列表中的选项全部选中,反之取消勾选则列表中的选项全部为未选中状态。
?1 2 3 4 5 6 7 |
$( "#all" ).click( function (){
if ( this .checked){
$( "#list :checkbox" ).prop( "checked" , true );
} else {
$( "#list :checkbox" ).prop( "checked" , false );
}
});
|
2、jQuery全选。当点击全选按钮#selectAll或者勾选全选按钮旁边的复选框#all时,列表中所有的选项都会被选中,包括全选旁边的复选框也是选中状态。
?1 2 3 |
$( "#selectAll" ).click( function () {
$( "#list :checkbox,#all" ).prop( "checked" , true );
});
|
3、全不选。当点击全不选按钮#unSelect时,列表中所有的选项都是未选中状态,当然包括#all也是未选中状态。
?1 2 3 |
$( "#unSelect" ).click( function () {
$( "#list :checkbox,#all" ).prop( "checked" , false );
});
|
4、反选。当点击反选按钮#reverse,列表中所有被选中的选项变为未选中状态,而所有未选中的选项变为已选中状态,当然也要注意#all的状态。
?1 2 3 4 5 6 |
$( "#reverse" ).click( function () {
$( "#list :checkbox" ).each( function () {
$( this ).prop( "checked" , !$( this ).prop( "checked" ));
});
allchk();
});
|
上述代码中遍历了选项列表,然后改变checked属性,调用函数allchk()是干什么的,别急,留在后面介绍。
5、获得选中的所有值。我们要跟后台程序交互就必须获取列表中所选项的值,我们通过遍历数组,将选中项的值存放在数组中,最后组成由逗号(,)隔开的字符串,开发者就可以通过获取这个字符串进行相应的操作了。
?1 2 3 4 5 6 7 8 |
$( "#getValue" ).click( function (){
var valArr = new Array;
$( "#list :checkbox[checked]" ).each( function (i){
valArr[i] = $( this ).val();
});
var vals = valArr.join( , ); //转换为逗号隔开的字符串
alert(vals);
});
|
为了完善选中选项功能,我们在单击列表中某个选项时,如果勾选的项刚好满足全部选中的条件,则#all也要相应的变为选中状态,同样,如果事先所有的选项是选中状态时,当取消勾选某个选项时,那么#all也要相应的变为未选中状态。
?1 2 3 4 |
//设置全选复选框
$( "#list :checkbox" ).click( function (){
allchk();
});
|
函数allchk()就是用来检测全选框#all应该是选中状态还是未选中状态的,请看代码。
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function allchk(){
var chknum = $( "#list :checkbox" ).size(); //选项总个数
var chk = 0;
$( "#list :checkbox" ).each( function () {
if ($( this ).prop( "checked" )== true ){
chk++;
}
});
if (chknum==chk){ //全选
$( "#all" ).prop( "checked" , true );
} else { //不全选
$( "#all" ).prop( "checked" , false );
}
}
|
总结
jQuery操作复选框的选中和不选中状态非常简单,使用attr()来设置"checked"属性的值,true未选中,false为未选中,在整个全选、反选过程中注意处理全选复选框的选中状态,以及获取选中选项的值。以下我将所有jQuery代码整理在一起,供大家参考。
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
$( function () {
//全选或全不选
$( "#all" ).click( function (){
if ( this .checked){
$( "#list :checkbox" ).prop( "checked" , true );
} else {
$( "#list :checkbox" ).prop( "checked" , false );
}
});
//全选
$( "#selectAll" ).click( function () {
$( "#list :checkbox,#all" ).prop( "checked" , true );
});
//全不选
$( "#unSelect" ).click( function () {
$( "#list :checkbox,#all" ).prop( "checked" , false );
});
//反选
$( "#reverse" ).click( function () {
$( "#list :checkbox" ).each( function () {
$( this ).prop( "checked" , !$( this ).prop( "checked" ));
});
allchk();
});
//设置全选复选框
$( "#list :checkbox" ).click( function (){
allchk();
});
//获取选中选项的值
$( "#getValue" ).click( function (){
var valArr = new Array;
$( "#list :checkbox[checked]" ).each( function (i){
valArr[i] = $( this ).val();
});
var vals = valArr.join( , );
alert(vals);
});
});
function allchk(){
var chknum = $( "#list :checkbox" ).size(); //选项总个数
var chk = 0;
$( "#list :checkbox" ).each( function () {
if ($( this ).prop( "checked" )== true ){
chk++;
}
});
if (chknum==chk){ //全选
$( "#all" ).prop( "checked" , true );
} else { //不全选
$( "#all" ).prop( "checked" , false );
}
}
|
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/1055.html
摘要:最近在看廖雪峰的教程,事件篇的练习题比较综合,研究了很久终于研究出来了,现在分享出来,提供给小白学习。题目如下首先要获取到全选和每一项的,然后通过逻辑代码实现题目要求。 最近在看廖雪峰的Jquery教程,事件篇的练习题比较综合,研究了很久终于研究出来了,现在分享出来,提供给小白学习。题目如下: showImg(https://segmentfault.com/img/bV7pGr?w=...
摘要:最近在看廖雪峰的教程,事件篇的练习题比较综合,研究了很久终于研究出来了,现在分享出来,提供给小白学习。题目如下首先要获取到全选和每一项的,然后通过逻辑代码实现题目要求。 最近在看廖雪峰的Jquery教程,事件篇的练习题比较综合,研究了很久终于研究出来了,现在分享出来,提供给小白学习。题目如下: showImg(https://segmentfault.com/img/bV7pGr?w=...
摘要:最后,我们只要在事件处理程序中获得这个布尔值传给这几个函数就可以了,其中,全选框反选链接可以从全选框的属性获得这个值,而全体的复选框要获得就得靠遍历了。 0x1播放列表收缩展开 实现效果 值得注意的一个地方是那个箭头,我这里只是用了简单的字符串替换,而原题用了背景图片移动来实现切换箭头,但是似乎那样做会导致整个容器的左右偏移、效果不是很好。 0x2鼠标移过显示车标 实现效果 这题看起来...
摘要:前段时间做了一个全选和反选的功能,最近不忙了,做了一个简化版的。全部代码如下全选反选全选反选大海天路再回首突然的自我甘心情愿光辉岁月雨蝶爱拼才会赢我只在乎你日不落选中的个数 前段时间做了一个全选和反选的功能,最近不忙了,做了一个简化版的demo。 showImg(https://segmentfault.com/img/bV3v44?w=489&h=318); 全部代码如下: ...
摘要:前段时间做了一个全选和反选的功能,最近不忙了,做了一个简化版的。全部代码如下全选反选全选反选大海天路再回首突然的自我甘心情愿光辉岁月雨蝶爱拼才会赢我只在乎你日不落选中的个数 前段时间做了一个全选和反选的功能,最近不忙了,做了一个简化版的demo。 showImg(https://segmentfault.com/img/bV3v44?w=489&h=318); 全部代码如下: ...
阅读 712·2023-04-25 19:43
阅读 3906·2021-11-30 14:52
阅读 3783·2021-11-30 14:52
阅读 3851·2021-11-29 11:00
阅读 3782·2021-11-29 11:00
阅读 3868·2021-11-29 11:00
阅读 3556·2021-11-29 11:00
阅读 6103·2021-11-29 11:00