视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
jQuery实现全选、反选和不选功能
2020-11-27 22:32:36 责编:小采
文档

本文给大家分享一段基于jQuery的全选、反选和不选功能的代码,适用于网页多选后需要进行批量操作的场景(如批量删除等)。文章结合实例,代码简洁,基本覆盖选项选择操作的方方面面,希望可以帮到有需要的WEB爱好者。

HTML

我们的页面上有一个歌曲列表,列出多行歌曲名称,并匹配复选框供用户选择,并且在列表下方有一排操作按钮。

<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时,列表中的选项全部选中,反之取消勾选则列表中的选项全部为未选中状态。

$("#all").click(function(){ 
 if(this.checked){ 
 $("#list :checkbox").prop("checked", true); 
 }else{ 
 $("#list :checkbox").prop("checked", false);
 } 
});

2、全选。当点击全选按钮#selectAll或者勾选全选按钮旁边的复选框#all时,列表中所有的选项都会被选中,包括全选旁边的复选框也是选中状态。

$("#selectAll").click(function () {
 $("#list :checkbox,#all").prop("checked", true); 
});

3、全不选。当点击全不选按钮#unSelect时,列表中所有的选项都是未选中状态,当然包括#all也是未选中状态。

$("#unSelect").click(function () { 
 $("#list :checkbox,#all").prop("checked", false); 
});

4、反选。当点击反选按钮#reverse,列表中所有被选中的选项变为未选中状态,而所有未选中的选项变为已选中状态,当然也要注意#all的状态。

$("#reverse").click(function () { 
 $("#list :checkbox").each(function () { 
 $(this).prop("checked", !$(this).prop("checked")); 
 });
 allchk();
});

上述代码中遍历了选项列表,然后改变checked属性,调用函数allchk()是干什么的,别急,留在后面介绍。

5、获得选中的所有值。我们要跟后台程序交互就必须获取列表中所选项的值,我们通过遍历数组,将选中项的值存放在数组中,最后组成由逗号(,)隔开的字符串,开发者就可以通过获取这个字符串进行相应的操作了。

$("#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也要相应的变为未选中状态。

//设置全选复选框
$("#list :checkbox").click(function(){
 allchk();
});

函数allchk()就是用来检测全选框#all应该是选中状态还是未选中状态的,请看代码。

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代码整理在一起,供大家参考。

$(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);
 }
}

下载本文
显示全文
专题