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 相关文章推荐
jQuery的一些注意
Dec 06 Javascript
Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件
Mar 12 Javascript
JS cookie中文乱码解决方法
Jan 28 Javascript
javascript实现多级联动下拉菜单的方法
Feb 06 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
Jun 15 Javascript
图解Javascript——作用域、作用域链、闭包
Mar 21 Javascript
js oncontextmenu事件使用详解
Mar 25 Javascript
详解vue组件通信的三种方式
Jun 30 Javascript
AngularJS中重新加载当前路由页面的方法
Mar 09 Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
Sep 05 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
Mar 26 Javascript
JS 创建对象的模式实例小结
Apr 28 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/03/17 PHP
Zend Framework动作助手Redirector用法实例详解
2016/03/05 PHP
PHP那些琐碎的知识点(整理)
2017/05/20 PHP
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
JS网页图片按比例自适应缩放实现方法
2014/01/15 Javascript
Jquery实现自定义tooltip示例代码
2014/02/12 Javascript
AngularJS表单编辑提交功能实例
2015/02/13 Javascript
js基础知识(公有方法、私有方法、特权方法)
2015/11/06 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
jQuery实现动态给table赋值的方法示例
2017/07/04 jQuery
详解如何运行vue项目
2019/04/15 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
原生js实现的观察者和订阅者模式简单示例
2020/04/18 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
js实现小球在页面规定的区域运动
2020/06/16 Javascript
通过实例解析chrome如何在mac环境中安装vue-devtools插件
2020/07/10 Javascript
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
使用相同的Apache实例来运行Django和Media文件
2015/07/22 Python
在Django中限制已登录用户的访问的方法
2015/07/23 Python
python daemon守护进程实现
2016/08/27 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
python利用高阶函数实现剪枝函数
2018/03/20 Python
Python Json模块中dumps、loads、dump、load函数介绍
2018/05/15 Python
使用Python的Django和layim实现即时通讯的方法
2018/05/25 Python
python3解析库lxml的安装与基本使用
2018/06/27 Python
PyQt5 实现字体大小自适应分辨率的方法
2019/06/18 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
2020/04/22 Python
Python绘图之二维图与三维图详解
2020/08/04 Python
工程质量承诺书
2014/03/27 职场文书
2015年学校党建工作总结
2015/05/19 职场文书
PHP 技巧 * SVG 保存为图片(分享图生成)
2021/04/02 PHP
Golang 实现超大文件读取的两种方法
2021/04/27 Golang
Vue3.0 手写放大镜效果
2021/07/25 Vue.js
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript