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 相关文章推荐
Extjs学习笔记之一 初识Extjs之MessageBox
Jan 07 Javascript
JavaScript的单例模式 (singleton in Javascript)
Jun 11 Javascript
两种简单实现菜单高亮显示的JS类代码
Jun 27 Javascript
js给onclick事件赋值,动态传参数实例解说
Mar 28 Javascript
jQuery动画效果-slideUp slideDown上下滑动示例代码
Aug 28 Javascript
用json方式实现在 js 中建立一个map
May 02 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
Sep 12 Javascript
Javascript页面跳转常见实现方式汇总
Nov 28 Javascript
jquery常用的12个小功能
Jul 22 Javascript
基于滚动条位置判断的简单实例
Dec 14 Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
Jul 27 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
Dec 10 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模仿asp Application对象在线人数统计实现方法
2015/01/04 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
JavaScript 设计模式之组合模式解析
2010/04/09 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
NodeJS url验证(url-valid)的使用方法
2013/11/18 NodeJs
Javascript快速排序算法详解
2014/12/03 Javascript
轻松实现js图片预览功能
2016/01/18 Javascript
Node.js返回JSONP详解
2016/05/18 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
vue.js中指令Directives详解
2017/03/20 Javascript
Validform验证时可以为空否则按照指定格式验证
2017/10/20 Javascript
javaScript中&quot;==&quot;和&quot;===&quot;的区别详解
2018/03/16 Javascript
vue实现随机验证码功能的实例代码
2019/04/30 Javascript
Vue.js 无限滚动列表性能优化方案
2019/12/02 Javascript
微信小程序实现日历签到
2020/09/21 Javascript
Vue $attrs &amp; inheritAttr实现button禁用效果案例
2020/12/07 Vue.js
python 合并文件的具体实例
2013/08/08 Python
用smtplib和email封装python发送邮件模块类分享
2014/02/17 Python
使用httplib模块来制作Python下HTTP客户端的方法
2015/06/19 Python
简单谈谈Python中的几种常见的数据类型
2017/02/10 Python
Python异常对代码运行性能的影响实例解析
2018/02/08 Python
Python实现判断一个整数是否为回文数算法示例
2019/03/02 Python
详解python:time模块用法
2019/03/25 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
2019/06/27 Python
Python 绘制酷炫的三维图步骤详解
2019/07/12 Python
Python Pillow.Image 图像保存和参数选择方式
2020/01/09 Python
Python处理mysql特殊字符的问题
2020/03/02 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
2020/09/20 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
数控专业应届生求职信
2013/11/27 职场文书
卫生系统先进事迹
2014/05/13 职场文书
超市创意活动方案
2014/08/15 职场文书
励志演讲稿200字
2014/08/21 职场文书
领导欢迎词致辞
2015/01/23 职场文书