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 相关文章推荐
js 页面传参数时 参数值含特殊字符的问题
Dec 13 Javascript
JavaScript日历实现代码
Sep 12 Javascript
基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)
Jul 31 Javascript
JavaScript中的函数模式详解
Feb 11 Javascript
JavaScript中的splice方法用法详解
Jul 20 Javascript
JS实现微信弹出搜索框 多条件查询功能
Dec 13 Javascript
jQuery中Chosen三级联动功能实例代码
Mar 07 Javascript
(模仿京东用户注册)用JQuery实现简单表单验证,初学者必看
Jan 08 jQuery
详解@Vue/Cli 3 Invalid Host header 错误解决办法
Jan 02 Javascript
3分钟了解vue数据劫持的原理实现
May 01 Javascript
ES6中异步对象Promise用法详解
Jul 31 Javascript
Axios代理配置及封装响应拦截处理方式
Apr 07 Vue.js
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自带的进位制之间的转换函数
2013/06/08 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
2014/10/15 PHP
php微信公众平台交互与接口详解
2016/11/28 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
Javascript 汉字字节判断
2009/08/01 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
JavaScript对象数组的排序处理方法
2015/10/21 Javascript
js实现div模拟模态对话框展现URL内容
2016/05/27 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
JavaScript中的编码和解码函数
2017/02/15 Javascript
checkbox:click事件触发span元素内容改变的方法
2017/09/11 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
vue代理和跨域问题的解决
2018/07/18 Javascript
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
2019/09/25 Javascript
el-form 多层级表单的实现示例
2020/09/10 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
2020/09/17 Javascript
[00:34]TI7不朽珍藏III——纯金地穴编织者饰品展示
2017/07/15 DOTA
Python中的字符串替换操作示例
2016/06/27 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
2017/08/21 Python
python将每个单词按空格分开并保存到文件中
2018/03/19 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
Flask项目中实现短信验证码和邮箱验证码功能
2019/12/05 Python
Python函数生成器原理及使用详解
2020/03/12 Python
html5使用canvas实现弹幕功能示例
2017/09/11 HTML / CSS
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
女性时尚在线:IVRose
2019/02/23 全球购物
说出一些常用的类,包,接口
2014/09/22 面试题
描述内存分配方式以及它们的区别
2016/10/15 面试题
广告学专业毕业生自荐信
2013/09/24 职场文书
放射科岗位职责
2015/02/14 职场文书
爱国主题班会教案
2015/08/14 职场文书
高一数学教学反思
2016/02/18 职场文书
演讲稿之开卷有益
2019/08/07 职场文书
解决persistence.xml配置文件修改存放路径的问题
2022/02/24 Java/Android
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers