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 EasyUI 使用介绍
Apr 01 Javascript
js对象的比较
Feb 26 Javascript
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
May 10 Javascript
JavaScript中的property和attribute介绍
Dec 26 Javascript
查询json的数据结构的8种方式简介
Mar 10 Javascript
js跨浏览器的事件侦听器和事件对象的使用方法
Dec 17 Javascript
基于ajax与msmq技术的消息推送功能实现代码
Dec 26 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
Mar 02 Javascript
10个最受欢迎的 JavaScript框架(推荐)
Apr 24 Javascript
使用express来代理服务的方法
Jun 21 Javascript
JS原生实现轮播图的几种方法
Mar 23 Javascript
vue ref如何获取子组件属性值
Mar 31 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可变变量学习小结
2015/11/29 PHP
mysql_escape_string()函数用法分析
2016/04/25 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
JavaScript 三种不同位置代码的写法
2009/10/25 Javascript
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
Js判断CSS文件加载完毕的具体实现
2014/01/17 Javascript
通过JS判断联网类型和连接状态的实现代码
2015/04/01 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
在JavaScript中使用JSON数据
2016/02/15 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
原生JavaScript实现Ajax异步请求
2017/11/19 Javascript
推荐10款扩展Web表单的JS插件
2017/12/25 Javascript
Vue 过滤器filters及基本用法
2017/12/26 Javascript
vue-router history模式下的微信分享小结
2018/07/05 Javascript
详解JavaScript 中 if / if...else...替换方式
2018/07/15 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
vue图片上传组件使用详解
2019/12/23 Javascript
js实现聊天对话框
2020/02/08 Javascript
Vue+Spring Boot简单用户登录(附Demo)
2020/11/12 Javascript
Python解析树及树的遍历
2016/02/03 Python
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
Python Sphinx使用实例及问题解决
2020/01/17 Python
基于python的docx模块处理word和WPS的docx格式文件方式
2020/02/13 Python
Django扫码抽奖平台的配置过程详解
2021/01/14 Python
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
英国版MAC彩妆品牌:Illamasqua
2018/04/18 全球购物
服务员自我评价
2014/01/25 职场文书
企业安全生产责任书
2014/04/14 职场文书
篝火晚会策划方案
2014/05/16 职场文书
服务行业演讲稿
2014/09/02 职场文书
2014年高中班主任工作总结
2014/11/08 职场文书
小学教师先进事迹材料
2014/12/15 职场文书
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python
CSS 制作波浪效果的思路
2021/05/18 HTML / CSS
React中的Context应用场景分析
2021/06/11 Javascript