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定义函数的方法
Dec 06 Javascript
javascript权威指南 学习笔记之变量作用域分享
Sep 28 Javascript
一个JavaScript递归实现反转数组字符串的实例
Oct 14 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
Aug 13 Javascript
JS实现仿微博可关闭弹出层效果
Sep 21 Javascript
AngularJS 路由详解和简单实例
Jul 28 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
Oct 27 Javascript
Angularjs验证用户输入的字符串是否为日期时间
Jun 01 Javascript
JS实现的简单四则运算计算器功能示例
Sep 27 Javascript
Vue表单控件绑定图文详解
Feb 11 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
Jun 18 jQuery
JS实现基本的网页计算器功能示例
Jan 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
php生成图片验证码-附五种验证码
2015/08/19 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
PHP实现支持CURL字符串证书传输的方法
2019/03/23 PHP
PHP7 新增功能
2021/03/09 PHP
自适应高度框架 ----属个人收藏内容
2007/01/22 Javascript
return false;和e.preventDefault();的区别
2010/07/11 Javascript
基于jQuery的倒计时插件代码
2011/05/07 Javascript
别了 JavaScript中的isXX系列
2012/08/01 Javascript
基于jQuery中对数组进行操作的方法
2013/04/16 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
vue.js删除动态绑定的radio的指定项
2017/06/02 Javascript
微信小程序之前台循环数据绑定
2017/08/18 Javascript
使用原生js封装的ajax实例(兼容jsonp)
2017/10/12 Javascript
jquery拖拽自动排序插件使用方法详解
2020/07/20 jQuery
Node.js操作系统OS模块用法分析
2019/01/04 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
Python 数据结构之旋转链表
2017/02/25 Python
Python编程flask使用页面模版的方法
2018/12/28 Python
Python绘图Matplotlib之坐标轴及刻度总结
2019/06/28 Python
python获取array中指定元素的示例
2019/11/26 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
2019/12/25 Python
如何利用python进行时间序列分析
2020/08/04 Python
Python代码注释规范代码实例解析
2020/08/14 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
在加拿大在线租赁和购买电子游戏:Game Access
2019/09/02 全球购物
人事助理自荐信
2014/02/02 职场文书
银行竞聘演讲稿范文
2014/04/23 职场文书
学校领导班子四风对照检查材料
2014/09/27 职场文书
Vue2.0搭建脚手架
2022/03/13 Vue.js
Python&Matlab实现樱花的绘制
2022/04/07 Python
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript