jQuery实现全选、反选和不选功能的方法详解


Posted in jQuery onDecember 04, 2019

本文实例讲述了jQuery实现全选、反选和不选功能的方法。分享给大家供大家参考,具体如下:

适用于网页多选后需要进行批量操作的场景(如批量删除等)。如有问题希望大家可以指正。谢谢~~

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库文件:

jQuery 百度CDN

<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>

Jquery支持的版本有:2.0.3, 2.0.2, 2.0.1, 2.0.0, 1.10.2, 1.10.1, 1.10.0, 1.9.1, 1.9.0, 1.8.3, 1.8.2, 1.8.1, 1.8.0, 1.7.2, 1.7.1, 1.7.0, 1.6.4, 1.6.3, 1.6.2, 1.6.1, 1.6.0, 1.5.2, 1.5.1, 1.5.0, 1.4.4, 1.4.3, 1.4.2, 1.4.1, 1.4.0, 1.3.2, 1.3.1, 1.3.0, 1.2.6, 1.2.3

jQuery

1、全选或全不选。当勾选全选按钮#selectAll旁边的复选框#all时,列表中的选项全部选中,反之取消勾选则列表中的选项全部为未选中状态。

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

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

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

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

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

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

$("#reverse").click(function () {
  $("#list :checkbox").each(function () {
    $(this).attr("checked", !$(this).attr("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).attr("checked")==true){
      chk++;
    }
  });
  if(chknum==chk){//全选
    $("#all").attr("checked",true);
  }else{//不全选
    $("#all").attr("checked",false);
  }
}

总结

jQuery操作复选框的选中和不选中状态非常简单,使用attr()来设置"checked"属性的值,true未选中,false为未选中,在整个全选、反选过程中注意处理全选复选框的选中状态,以及获取选中选项的值。以下我将所有jQuery代码整理在一起,供大家参考。

$(function () {
  //全选或全不选
  $("#all").click(function(){
    if(this.checked){
      $("#list :checkbox").attr("checked", true);
    }else{
      $("#list :checkbox").attr("checked", false);
    }
   });
  //全选
  $("#selectAll").click(function () {
     $("#list :checkbox,#all").attr("checked", true);
  });
  //全不选
  $("#unSelect").click(function () {
     $("#list :checkbox,#all").attr("checked", false);
  });
  //反选
  $("#reverse").click(function () {
     $("#list :checkbox").each(function () {
       $(this).attr("checked", !$(this).attr("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).attr("checked")==true){
      chk++;
    }
  });
  if(chknum==chk){//全选
    $("#all").attr("checked",true);
  }else{//不全选
    $("#all").attr("checked",false);
  }
}

jQuery实现的全选、反选和不选功能 示例:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>演示:jQuery实现的全选、反选和不选功能</title>
<style>
.top_title{text-align:center;}
.demo{width:520px; margin:40px auto 0 auto; min-height:250px;}
ul li{line-height:30px; padding:4px 0; font-size:14px}
.btn{overflow: hidden;display:inline-block;*display:inline;padding:4px 20px 4px;font-size:14px;line-height:18px;*line-height:20px;color:#fff;text-align:center;vertical-align:middle;cursor:pointer;background-color:#5bb75b;border:1px solid #cccccc;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px; margin-left:2px}
</style>
<script src="http://libs.baidu.com/jquery/1.7.2/jquery.js"></script>
<script>
$(function () {
  //全选或全不选
  $("#all").click(function(){
    if(this.checked){
      $("#list :checkbox").attr("checked", true);
    }else{
      $("#list :checkbox").attr("checked", false);
    }
   });
  //全选
  $("#selectAll").click(function () {
     $("#list :checkbox,#all").attr("checked", true);
  });
  //全不选
  $("#unSelect").click(function () {
     $("#list :checkbox,#all").attr("checked", false);
  });
  //反选
  $("#reverse").click(function () {
     $("#list :checkbox").each(function () {
       $(this).attr("checked", !$(this).attr("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).attr("checked")==true){
      chk++;
    }
  });
  if(chknum==chk){//全选
    $("#all").attr("checked",true);
  }else{//不全选
    $("#all").attr("checked",false);
  }
}
</script>
</head>
<body>
<div id="main">
  <h2 class="top_title"><a href="">jQuery实现的全选、反选和不选功能</a></h2>
  <div class="demo">
      <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">
  </div>
</div>
</body>
</html>

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家jQuery程序设计有所帮助。

jQuery 相关文章推荐
JQuery实现图片轮播效果
May 08 jQuery
jquery.validate.js 多个相同name的处理方式
Jul 10 jQuery
Django中使用jquery的ajax进行数据交互的实例代码
Oct 15 jQuery
jquery获取transform里的值实现方法
Dec 12 jQuery
基于jQuery实现Ajax验证用户名是否可用实例
Mar 25 jQuery
jQuery创建及操作xml格式数据示例
May 26 jQuery
jQuery实现的淡入淡出图片轮播效果示例
Aug 29 jQuery
jQuery实现适用于移动端的跑马灯抽奖特效示例
Jan 18 jQuery
JQuery animate动画应用示例
May 14 jQuery
Jquery动态列功能完整实例
Aug 30 jQuery
jQuery实现数字华容道小游戏(实例代码)
Jan 16 jQuery
jquery更改元素属性attr()方法操作示例
May 22 jQuery
jQuery轮播图功能制作方法详解
Dec 03 #jQuery
jQuery实现弹幕特效
Nov 29 #jQuery
jquery实现直播弹幕效果
Nov 28 #jQuery
jQuery实现简单弹幕效果
Nov 28 #jQuery
jQuery实现轮播图效果
Nov 26 #jQuery
jQuery与原生JavaScript选择HTML元素集合用法对比分析
Nov 26 #jQuery
高效jQuery选择器的5个技巧实例分析
Nov 26 #jQuery
You might like
深入探讨<br />和 \r\n两者有什么区别??
2013/06/05 PHP
PHP小教程之实现链表
2014/06/09 PHP
PHP检测字符串是否为UTF8编码的常用方法
2014/11/21 PHP
PHP四舍五入、取整、round函数使用示例
2015/02/06 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
javascript new后的constructor属性
2010/08/05 Javascript
JavaScript的继承的封装介绍
2013/10/15 Javascript
关于jQuery判断元素是否存在的问题示例探讨
2014/07/21 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式)
2015/08/04 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
2015/12/03 Javascript
Bootstrap导航条鼠标悬停下拉菜单
2017/01/04 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
2017/06/04 Javascript
解决vue-cli中stylus无法使用的问题方法
2017/06/19 Javascript
bootstrap3-dialog-master模态框使用详解
2017/08/22 Javascript
Vue.js递归组件构建树形菜单
2017/12/24 Javascript
vue生命周期和react生命周期对比【推荐】
2018/09/19 Javascript
js canvas实现写字动画效果
2018/11/30 Javascript
Layui给switch添加响应事件的例子
2019/09/03 Javascript
判断JavaScript中的两个变量是否相等的操作符
2019/12/21 Javascript
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
代码分析Python地图坐标转换
2018/02/08 Python
flask-socketio实现WebSocket的方法
2018/07/31 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
Python之Django自动实现html代码(下拉框,数据选择)
2020/03/13 Python
Django REST Swagger实现指定api参数
2020/07/07 Python
WoolOvers爱尔兰:羊绒、羊毛和棉针织品
2017/01/04 全球购物
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
SEPHORA丝芙兰捷克官网:购买香水、化妆品和护肤品
2018/11/26 全球购物
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
恒华伟业笔试面试题
2015/02/26 面试题
关于有小孩的离婚协议书
2014/10/26 职场文书
我们的节日端午节活动总结
2015/02/11 职场文书
内勤岗位职责范本
2015/04/13 职场文书
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android