jquery checkbox无法用attr()二次勾选问题的解决方法


Posted in Javascript onJuly 22, 2016

今晨,漂亮的测试妹妹提了个奇怪的bug,说我一功能checkbox时隐时现,比如第一次打开有勾选,第n次打开可能就不选了。

想到与美女有亲密接触机会,马上鸡动起来。

经过偶层层抽次剥茧(da da jiang you),终于知道了原因:attr()在二次选中勾选框时,失效。

比如,如下HTML页面,一点【选中】、二点【取消选中】、三点【选中】,瞧,不行了呗。

1.html

<!doctype html>
<html lang="en">
<head>
 <meta charset="utf-8">
 <title>prop demo</title>
 <style>
 img {
  padding: 10px;
 }
 div {
  color: red;
  font-size: 24px;
 }
 </style>
 <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
 <input type="checkbox" checked="checked">
 <input type="checkbox">
 <input type="checkbox">
 <input type="checkbox" checked="checked">
 
<script>
$( "input[type='checkbox']" ).prop( "checked", function( i, val ) {
 return !val;
});
</script>
 
</body>
</html>

解决方案,是使用prop()替换attr()方法(在Jquery1.6以上),如下代码:

2.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Attr checked</title>
<script type="text/javascript" src="./js/jquery-1.11.2.js"></script>
<script type="text/javascript">
  function switchChecked(flag) {
    $("input[type='checkbox']").prop('checked', flag);
  }
</script>
</head>
<body>
  <input type="checkbox" />
  <input type="button" onclick="switchChecked(true)" value="选中">
  <input type="button" onclick="switchChecked(false)" value="取消选中">
</body>
</html>

关于官方文档,见:http://api.jquery.com/attr/

或者http://api.jquery.com/prop/

摘抄如下:“As of jQuery 1.6, the .attr() method returns undefined for attributes that have not been set. To retrieve and change DOM properties such as the checked, selected, or disabled state of form elements, use the .prop() method.”

以上这篇jquery checkbox无法用attr()二次勾选问题的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript dom 基本操作小结
Apr 11 Javascript
深入理解javascript动态插入技术
Nov 12 Javascript
jquery和ajax的关系详细介绍
Nov 29 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
Mar 27 Javascript
JavaScript检测鼠标移动方向的方法
May 22 Javascript
jQuery实现鼠标点击弹出渐变层的方法
Jul 09 Javascript
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Dec 14 Javascript
ES6学习教程之Map的常用方法总结
Aug 03 Javascript
vue-cli V3.0版本的使用详解
Oct 24 Javascript
angular 实现同步验证器跨字段验证的方法
Apr 11 Javascript
js实现购物车商品数量加减
Sep 21 Javascript
vuex中遇到的坑,vuex数据改变,组件中页面不渲染操作
Nov 16 Javascript
Select下拉框模糊查询功能实现代码
Jul 22 #Javascript
jQuery Select下拉框操作小结(推荐)
Jul 22 #Javascript
Ajax分页插件Pagination从前台jQuery到后端java总结
Jul 22 #Javascript
JQuery 设置checkbox值二次无效的解决方法
Jul 22 #Javascript
jQuery 自定义下拉框(DropDown)附源码下载
Jul 22 #Javascript
Javascript基础学习笔记(菜鸟必看篇)
Jul 22 #Javascript
JS实现的多张图片轮流播放幻灯片效果
Jul 22 #Javascript
You might like
分享一则PHP定义函数代码
2015/02/26 PHP
Yii框架表单提交验证功能分析
2017/01/07 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
2017/02/15 PHP
thinkPHP5.0框架引入Traits功能实例分析
2017/03/18 PHP
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
js事件绑定快捷键以ctrl+k为例
2014/09/30 Javascript
Javascript常用字符串判断函数代码分享
2014/12/08 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
JavaScript队列、优先队列与循环队列
2016/11/14 Javascript
常用的javascript设计模式
2017/01/11 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
解决canvas画布使用fillRect()时高度出现双倍效果的问题
2017/08/03 Javascript
详解vue使用vue-layer-mobile组件实现toast,loading效果
2018/08/31 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
layui的表单提交以及验证和修改弹框的实例
2019/09/09 Javascript
javascript 易错知识点实例小结
2020/04/25 Javascript
收集的几个Python小技巧分享
2014/11/22 Python
Python MySQLdb Linux下安装笔记
2015/05/09 Python
Python进行数据提取的方法总结
2016/08/22 Python
python实现简单日志记录库glog的使用
2019/12/13 Python
春节到了 教你使用python来抢票回家
2020/01/06 Python
Tensorflow训练MNIST手写数字识别模型
2020/02/13 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
Django中的DateTimeField和DateField实现
2021/02/24 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
全球知名提供各类营养保健品的零售商:Vitamin Shoppe
2016/10/09 全球购物
System.Array.CopyTo()和System.Array.Clone()有什么区别
2016/06/20 面试题
小区门卫工作职责
2013/12/14 职场文书
2014年五四青年节演讲稿范文
2014/04/22 职场文书
委托书的格式
2014/08/01 职场文书
求职意向书范本
2015/05/11 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书
防止web项目中的SQL注入
2021/12/06 MySQL
hive数据仓库新增字段方法
2022/06/25 数据库