最近在看廖雪峰的Jquery教程,事件篇的练习题比较综合,研究了很久终于研究出来了,现在分享出来,提供给小白学习。题目如下:

首先要获取到全选checkbox和每一项的checkbox,然后通过逻辑代码实现题目要求。
先提供常规思路的版本,代码注释已经详细了:

selectAllLabel.click(() => {
selectAllLabel.hide();
deselectAllLabel.show();
langs.prop('checked', true);
}); deselectAllLabel.click(() => {//当用户去掉“全不选”时,自动不选中所有语言;
langs.prop('checked', false);
deselectAllLabel.hide();
selectAllLabel.show();
}); langs.map(() => {
$(this).change(() => {
// 首先获取已选中checkbox的个数
var len = form.find('[name=lang]:checked').length;
console.log('len=', len);
// 当用户把所有语言都手动勾上时,“全选”被自动勾上,并变为“全不选”;
if (len === langs.length) {
selectAllLabel.hide();
deselectAllLabel.show();
selectAll.prop('checked', true);
} else { // 当用户手动去掉选中至少一种语言时,“全不选”自动被去掉选中,并变为“全选”。
selectAll.prop('checked', false);
selectAllLabel.show();
deselectAllLabel.hide();
}
});
}); invertSelect.click(() => {
langs.each(() => {
$(this).prop('checked', !$(this).prop('checked'));
});
});

上面的代码可以实现题目的要求,但是代码量有点大,强迫症不精简会死的。先看看效果吧:

下面是放大招时间,如果你已经搞懂上面的方法,请向下升级:

function updateLabel() {
// 当已选中项和langs项数相等则allChecked为true,否则为false
let allChecked = langs.filter(':checked').length === langs.length;
// 根据选项是否全选中来设置“全选”选框的选中状态
selectAll.prop('checked', allChecked);
if (allChecked) {
selectAllLabel.hide();
deselectAllLabel.show();
} else {
selectAllLabel.show();
deselectAllLabel.hide();
}
}
selectAll.change(e => {
// 根据selectAll是否选中,设置每个langs的状态
langs.prop('checked', selectAll.is(':checked'));
updateLabel();
});
invertSelect.click(e => {
langs.click();
});
langs.change(() => updateLabel()); });

Jquery实现checkbox全选、取消全选和反选的更多相关文章

  1. Jquery CheckBox复选框 全选/取消全选 最佳实现方式 参考案例

    <input id="chkAll" type="checkbox" />全选/取消全选</div> <asp:Repeater ...

  2. jQuery 复选框全选/取消全选/反选

    jQuery实现的复选框全选/取消全选/反选及获得选择的值. 完整代码: <!DOCTYPE html> <html> <head> <script type ...

  3. html checkbox 实现全选/取消全选

    html checkbox  实现全选/取消全选 <html> <body> <table border="1"> <tr> < ...

  4. 【转载】checkbox实现全选/取消全选

    比较简单.好理解的写法,做个备注.查看请前往原地址:http://blog.csdn.net/graceup/article/details/46650781 <html> <bod ...

  5. checkbox全选/取消全选

    //checkbox全选/取消全选 $(function() { $("#checkAll").click(function() { if(this.checked){ $(&qu ...

  6. jquery checkbox勾选取消勾选的诡异问题

    jquery checkbox勾选/取消勾选的诡异问题jquery checkbox勾选/取消勾选的诡异问题 <form>        你爱好的运动是?<input type=&q ...

  7. jQuery--checkbox全选/取消全选

    用JavaScript使页面上的一组checkbox全选/取消全选,逻辑很简单,实现代码也没有太难的语法.但使用jQuery实现则更简单,代码也很简洁,精辟! jQuery版本:1.3.2 <h ...

  8. AngularJS--购物车全选/取消全选功能实现

    刚学习angularJS,于是练习写了一个类似于购物车的全选/取消全选的功能,主要实现的功能有: 1.勾选全选checkbox,列表数据全部被勾选,取消同理,用ng-model实现双向绑定: 2.选中 ...

  9. Vue 全选/取消全选,反选/取消反选

    这是一个组件: <template> <div> <div> <input type="checkbox" v-model="i ...

  10. vue实现功能 单选 取消单选 全选 取消全选

    vue实现功能 单选 取消单选 全选 取消全选 代码部分 <template> <div class=""> <h1>全选框</h1> ...

随机推荐

  1. 浅谈PHP小马免杀

    在渗透测试过程初期,上传小马,拿到 webshell 再进行下一步的操作,现如今的网站安全更多是 一些云防护.CDN防护.服务器安全软件等等,给渗透测试.提权等带来了一定难度的提升, 今天探讨一下如何 ...

  2. overflow text-overflow 超过部分隐藏问题

    overflow:是针对容器内所有的数据溢出的一种统一处理方式,不管容器内的存储的是文本 图片还是其他的数据 统一取值; hidden隐藏, scroll滚动条显示,visible溢出显示text-o ...

  3. Windows2012R2 设置NTP时间服务器

    一.服务端配置 (Ntp服务器,客户端将根据这台服务器的时间进行同步) 1.微软键+R键,进入“运行”,输入“regedit”,进入注册表 2. HKEY_LOCAL_MACHINE\SYSTEM\C ...

  4. [LC] 103. Binary Tree Zigzag Level Order Traversal

    Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...

  5. [LC] 39. Combination Sum

    Given a set of candidate numbers (candidates) (without duplicates) and a target number (target), fin ...

  6. RHCE考试(Linux7)

    博主本人平和谦逊,热爱学习,读者阅读过程中发现错误的地方,请帮忙指出,感激不尽 一.环境模拟 * server0.example.com :172.25.0.11 * desktop0.example ...

  7. z-index优先级小结

    z-index是深度属性,设置元素在z轴上面的堆叠顺序. 强调:z-index必须和定位元素position:absollute|relative|fixed一起使用,否则无效 1.z-index属性 ...

  8. centos 6.* 修改时间

    一.查看Centos的时区和时间 1.使用date命令查看Centos时区 [root@VM_centos ~]# date -R Mon, 26 Mar 2018 19:14:03 +0800 2. ...

  9. 【Vue 学习笔记 一、Vue开发环境搭建】

    搭建Vue的开发环境 1.首先安装Nodejs  (因为我的系统是Windows的所以就选择第一个了,这个看个人的开发环境) 下载好后,然后一路确定,如果有更改安装目录的需求,就自己切换安装目录,由于 ...

  10. Eclipse创建java web工程

    Eclipse创建java web工程 eclipse版本:eclipse-jee-4.5-win32-x64 tomcat版本:apache-tomcat-7.0.63-windows-x64 jd ...