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 相关文章推荐
JavaScript高级程序设计 读书笔记之九 本地对象Array
Feb 27 Javascript
js获取网页高度(详细整理)
Dec 28 Javascript
jQuery 计算iframe 窗口大小的方法
May 13 Javascript
javascript学习笔记--数字格式类型
May 22 Javascript
使用JavaScript获取地址栏参数的方法
Dec 19 Javascript
JS中事件冒泡和事件捕获介绍
Dec 13 Javascript
Node.js学习入门
Jan 03 Javascript
微信小程序 template模板详解及实例代码
Mar 09 Javascript
如何使用JS在HTML中自定义字符串格式化
Jul 20 Javascript
JS实现前端页面的搜索功能
Jun 12 Javascript
jQuery实现左右两个列表框的内容相互移动功能示例
Jan 27 jQuery
原生js实现购物车
Sep 23 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
PHP4引用文件语句的对比
2006/10/09 PHP
php小技巧 把数组的键和值交换形成了新的数组,查找值取得键
2011/06/02 PHP
解析thinkphp中的导入文件标签
2013/06/20 PHP
Input 特殊事件onpopertychange和oninput
2009/06/17 Javascript
google地图的路线实现代码
2009/08/20 Javascript
JavaScript对象数组的排序处理方法
2015/10/21 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
原生js实现回复评论功能
2017/01/18 Javascript
详解Vue的computed(计算属性)使用实例之TodoList
2017/08/07 Javascript
利用vscode调试编译后的js代码详解
2018/05/14 Javascript
vue如何获取自定义元素属性参数值的方法
2019/05/14 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
python备份文件以及mysql数据库的脚本代码
2013/06/10 Python
Linux下使用python自动修改本机网关代码分享
2015/05/21 Python
numpy自动生成数组详解
2017/12/15 Python
python主线程捕获子线程的方法
2018/06/17 Python
关于python写入文件自动换行的问题
2018/06/23 Python
简单了解python 邮件模块的使用方法
2019/07/24 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
2020/01/13 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
2020/07/14 Python
无需压缩软件,用python帮你操作压缩包
2020/08/17 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
好的自荐信包括什么内容
2013/11/07 职场文书
个人简历自荐信
2013/12/05 职场文书
淘宝好评语大全
2014/05/05 职场文书
《中国梦我的梦》大学生演讲稿
2014/08/20 职场文书
个人批评与自我批评材料
2014/10/17 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
工作调动申请报告
2015/05/18 职场文书
刑事起诉书范文
2015/05/19 职场文书
入党转正介绍人意见
2015/06/03 职场文书
2016新年年会主持词
2015/07/06 职场文书
基于python制作简易版学生信息管理系统
2021/04/20 Python
关于Python中*args和**kwargs的深入理解
2021/08/07 Python