jQuery实现全选、反选和不选功能


Posted in jQuery onAugust 16, 2017

本文给大家分享一段基于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);
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
Mar 21 jQuery
jQuery复合事件用法示例
Jun 10 jQuery
利用jQuery异步上传文件的插件用法详解
Jul 19 jQuery
jQuery实现的弹幕效果完整实例
Sep 06 jQuery
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
Jan 18 jQuery
jQuery阻止事件冒泡实例分析
Jul 03 jQuery
jQuery实现点击自身以外区域关闭弹出层功能完整示例【改进版】
Jul 31 jQuery
js jquery 获取某一元素到浏览器顶端的距离实现方法
Sep 05 jQuery
jQuery中实现text()的方法
Apr 04 jQuery
jQuery实现的鼠标拖动画矩形框示例【可兼容IE8】
May 17 jQuery
Jquery动态列功能完整实例
Aug 30 jQuery
jQuery操作元素的内容和样式完整实例分析
Jan 10 jQuery
jQuery取得元素标签名称小结(附代码)
Aug 16 #jQuery
深入研究jQuery图片懒加载 lazyload.js使用方法
Aug 16 #jQuery
jQuery中each循环的跳出和结束实例
Aug 16 #jQuery
基于JQuery的Ajax方法使用详解
Aug 16 #jQuery
jquery获取链接地址和跳转详解(推荐)
Aug 15 #jQuery
全面解析jQuery中的$(window)与$(document)的用法区别
Aug 15 #jQuery
jQuery DOM节点的遍历方法小结
Aug 15 #jQuery
You might like
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
Laravel5.4框架中视图共享数据的方法详解
2019/09/05 PHP
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
Jquery跨域获得Json时invalid label错误的解决办法
2011/01/11 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
javascript相关事件的几个概念
2015/05/21 Javascript
jquery插件validation实现验证身份证号等
2015/06/04 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
React Native 搭建开发环境的方法步骤
2017/10/30 Javascript
小程序清理本地缓存的方法
2018/08/17 Javascript
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
js实现移动端轮播图滑动切换
2020/12/21 Javascript
[05:09]第二届DOTA2亚洲邀请赛决赛日比赛集锦:iG 3:0 OG夺冠
2017/04/05 DOTA
从Python的源码浅要剖析Python的内存管理
2015/04/16 Python
在Python下尝试多线程编程
2015/04/28 Python
Python中Django框架利用url来控制登录的方法
2015/07/25 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
2018/03/05 Python
Python wxpython模块响应鼠标拖动事件操作示例
2018/08/23 Python
解决Python3.5+OpenCV3.2读取图像的问题
2018/12/05 Python
Python 使用folium绘制leaflet地图的实现方法
2019/07/05 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
详解python uiautomator2 watcher的使用方法
2019/09/09 Python
django有哪些好处和优点
2020/09/01 Python
Pycharm Git 设置方法
2020/09/15 Python
Peter Millar官网:美国高档生活服饰品牌
2018/07/02 全球购物
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
《临死前的严监生》教学反思
2014/02/13 职场文书
优秀会计求职信
2014/07/04 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
python通过opencv调用摄像头操作实例分析
2021/06/07 Python
SQL Server中搜索特定的对象
2022/05/25 SQL Server