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 相关文章推荐
Prototype源码浅析 Number部分
Jan 16 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
Sep 14 Javascript
简介alert()与console.log()的不同
Aug 26 Javascript
Bootstrap每天必学之标签与徽章
Nov 27 Javascript
Jquery基础之事件操作详解
Jun 14 Javascript
微信小程序  audio音频播放详解及实例
Nov 02 Javascript
Angular 常用指令实例总结整理
Dec 13 Javascript
EasyUI为Numberbox添加blur事件的方法
Mar 05 Javascript
详解webpack多页面配置记录
Jan 22 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
Apr 28 jQuery
js console.log打印对象时属性缺失的解决方法
May 23 Javascript
JavaScript实现刮刮乐效果
Nov 01 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
JAVA/JSP学习系列之六
2006/10/09 PHP
PHP实现微信发红包程序
2015/08/24 PHP
CodeIgniter视图使用注意事项
2016/01/20 PHP
php文件管理基本功能简单操作
2017/01/16 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
SUN的《AJAX与J2EE》全文译了
2007/02/23 Javascript
javascript编程起步(第二课)
2007/02/27 Javascript
jQuery中需要注意的细节问题小结
2011/12/06 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
2013/08/02 Javascript
给事件响应函数传参数的四种方式小结
2013/12/05 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
jQuery居中元素scrollleft计算方法示例
2017/01/16 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
2017/06/13 jQuery
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
2019/03/13 Javascript
详解nodejs http请求相关总结
2019/03/31 NodeJs
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
2020/07/22 Javascript
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
python二叉树遍历的实现方法
2013/11/21 Python
Python functools模块学习总结
2015/05/09 Python
python实现数值积分的Simpson方法实例分析
2015/06/05 Python
使用Scrapy爬取动态数据
2018/10/21 Python
详解Python传入参数的几种方法
2019/05/16 Python
django的聚合函数和aggregate、annotate方法使用详解
2019/07/23 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
2019/07/31 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
意大利专业化妆品品牌:KIKO MILANO
2017/02/01 全球购物
元旦晚会策划方案
2014/02/18 职场文书
我的中国梦演讲稿300字
2014/08/19 职场文书
毕业季聚会祝酒词!
2019/07/04 职场文书
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript
如何使用Python实现一个简易的ORM模型
2021/05/12 Python