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高级程序设计 读书笔记之十一 内置对象Global
Mar 07 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
Apr 08 Javascript
jquery 动态创建元素的方式介绍及应用
Apr 21 Javascript
JS往数组中添加项性能分析
Feb 25 Javascript
angular forEach方法遍历源码解读
Jan 25 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
Sep 21 Javascript
详解在Vue中使用TypeScript的一些思考(实践)
Jul 06 Javascript
js实现前面自动补全位数的方法
Oct 10 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
Jul 10 jQuery
webpack是如何实现模块化加载的方法
Nov 06 Javascript
JS深入学习之数组对象排序操作示例
May 01 Javascript
解决ant design vue中树形控件defaultExpandAll设置无效的问题
Oct 26 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字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
9个经典的PHP代码片段分享
2014/12/18 PHP
php实现excel中rank函数功能的方法
2015/01/20 PHP
PHP的中使用非缓冲模式查询数据库的方法
2017/02/05 PHP
如何实现动态删除javascript函数
2007/05/27 Javascript
基于jquery的文章中所有图片width大小批量设置方法
2013/08/01 Javascript
JS常见问题整理(持续更新)
2013/08/06 Javascript
JS运动框架之分享侧边栏动画实例
2015/03/03 Javascript
javascript动态设置样式style实例分析
2015/05/13 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
2015/12/03 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
JS双击变input框批量修改内容
2016/12/12 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
[50:05]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
python通过floor函数舍弃小数位的方法
2015/03/17 Python
python中Flask框架简单入门实例
2015/03/21 Python
Python提取Linux内核源代码的目录结构实现方法
2016/06/24 Python
Python入门_条件控制(详解)
2017/05/16 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
2019/10/18 Python
详解Python yaml模块
2020/09/23 Python
python源文件的字符编码知识点详解
2021/03/04 Python
HTML5 标准将把互联网视频扔回到黑暗时代
2010/02/10 HTML / CSS
英国领先的运动物理治疗供应公司:Vivomed
2018/07/14 全球购物
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
酒吧总经理岗位职责
2013/12/10 职场文书
办公室前台的岗位职责
2013/12/20 职场文书
校园餐饮创业计划书
2014/01/10 职场文书
2015年副班长工作总结
2015/05/15 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
关于vue中如何监听数组变化
2021/04/28 Vue.js
Win10 heic文件怎么打开 ? Win10 heic文件打开教程
2022/04/06 数码科技
vue3使用vuedraggable实现拖拽功能
2022/04/06 Vue.js
Golang入门之计时器
2022/05/04 Golang