jQuery判断checkbox选中状态


Posted in Javascript onMay 12, 2016

前言

神奇的JQuery怎么设置checkbox状态时好时坏?明明同一行代码,断点跟踪确实执行了,但是有时候好使,有时候却没有生效。毕竟对JS不是很熟悉,只是通过JS来处理前端HTML的标签的状态设置时,通过JQuery有时候会更方便些的,但是发现更不好办。

今天尝试实现checkbox全选、全不选功能,与App开发中的效果是一样的,勾选全选则将所有的选项都选中;同样取消勾选某个子项也将全选设置为非选中状态;所有子选项都为选中状态时,将全选设置为选中状态。

由于对JS不是很熟悉,于是尝试各种百度、google,发现出来的文章都是坑爹啊。各种JQuery的,但是为什么我设置了就是没有作用的。起初以为是变量获取不到,于是断点跟踪,对象是取到了的,但是设置JQuery的方法来设置就是没有作用。

搜到的处理方式

这里的checkbox的id为cbxSelectAll,于是尝试这么写:

$('#cbxSelectAll').attr('checked', true);

结果是无效的。再尝试修改为:

$('#cbxSelectAll').attr('checked', 'checked');

结果是第一次设置生效了,再设置就没有生效。坑爹,这到底是什么东西,怎么时好时坏呢?

然后在设置为false时,这么写:

$('#cbxSelectAll').attr('checked', false);

// 也没有作用

//$('#cbxSelectAll').attr('checked', '');

果然是都没有作用。但是通过下面的设置,可以取消选中:

$('#cbxSelectAll').removeAttr('checked');

难道是年代久远,这些方法已经不再有效了吗?

最后解决办法

最后的解决办法还是放弃了JQuery,改用Javascript原生的Dom来设置。

下面是设置为全选或者取消全选状态的代码:

varcheckboxes = document.getElementsByName('selectIds');
varselectedCount = 0;
varunSelectCount = 0;
for (var i = 0; i < checkboxes.length; i++) {
varcheckbox = checkboxes[i];
if(checkbox.tagName == "INPUT" && checkbox.checked){
selectedCount++;
} else if (checkbox.tagName == "INPUT" && checkbox.checked == false) {
unSelectCount++;
}
}
if (selectedCount == checkboxes.length) {
document.getElementById('cbxSelectAll').checked = true;
} else if (unSelectCount != checkboxes.length) {
document.getElementById('cbxSelectAll').checked = false;
}

JQuery获取状态

JQuery通过checkbox的is函数来获取状态:

varisChecked = $('#cbxSelectAll').is(':checked');

之前尝试过使用attr函数来获取,但是获取的值显示为null:

// 显示为null,好生奇怪

varisChecked = $('#cbxSelectAll').attr('checked');

当然,我们也可以直接使用Javascript原生的Dom方式来获取,肯定是没有问题的:

varisChecked = document.getElementById('cbxSelectAll').checked;

小结

玩前端JQuery果然要比玩原生的JavaScript要吃力些,虽然有很多时候可以使代码更方便书写。不过还是两者结合来做吧。

Javascript 相关文章推荐
jQuery 使用手册(五)
Sep 23 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
Jun 27 Javascript
js鼠标滑过图片震动特效的方法
Feb 17 Javascript
jquery插件star-rating.js实现星级评分特效
Apr 15 Javascript
js闭包实现按秒计数
Apr 23 Javascript
Node.js和MongoDB实现简单日志分析系统
Apr 25 Javascript
jQuery实现表格展开与折叠的方法
May 04 Javascript
js正则匹配出所有图片及图片地址src的方法
Jun 08 Javascript
简单讲解AngularJS的Routing路由的定义与使用
Mar 05 Javascript
JavaScript实现复制内容到粘贴板代码
Mar 31 Javascript
BootStrap轻松实现微信页面开发代码分享
Oct 21 Javascript
vue 内联样式style中的background用法说明
Aug 05 Javascript
Bootstrap3制作自己的导航栏
May 12 #Javascript
基于Bootstrap重置输入框内容按钮插件
May 12 #Javascript
jquery ajax局部加载方法详解(实现代码)
May 12 #Javascript
分享12个非常实用的JavaScript小技巧
May 11 #Javascript
分享10个优化代码的CSS和JavaScript工具
May 11 #Javascript
Bootstrap组件(一)之菜单
May 11 #Javascript
Bootstrap 组件之按钮(二)
May 11 #Javascript
You might like
php如何调用webservice应用介绍
2012/11/24 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
JavaScript 嵌套函数指向this对象错误的解决方法
2010/03/15 Javascript
JS判断客服QQ号在线还是离线状态的方法
2015/01/13 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
js编写当天简单日历效果【实现代码】
2016/05/03 Javascript
AngularJS动态绑定HTML的方法分析
2016/11/07 Javascript
基于jquery实现的鼠标悬停提示案例
2016/12/11 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
2017/06/12 Javascript
React数据传递之组件内部通信的方法
2017/12/31 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
2019/08/23 Javascript
[02:42]2014DOTA2国际邀请赛 三冰专访:我会打到Ti20
2014/07/13 DOTA
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python的迭代器和生成器使用实例
2015/01/14 Python
python用来获得图片exif信息的库实例分析
2015/03/16 Python
听歌识曲--用python实现一个音乐检索器的功能
2016/11/15 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
2017/07/12 Python
Python读取图片为16进制表示简单代码
2018/01/19 Python
python+selenium 定位到元素,无法点击的解决方法
2019/01/30 Python
python中property和setter装饰器用法
2019/12/19 Python
Python导入模块包原理及相关注意事项
2020/03/25 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
thinkphp5 路由分发原理
2021/03/18 PHP
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
Java基础知识面试要点
2016/07/29 面试题
教师的实习自我鉴定
2013/12/17 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
赔偿协议书范本
2014/09/12 职场文书
python 实现体质指数BMI计算
2021/05/26 Python