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 事件绑定问题
Jan 01 Javascript
学习js在线html(富文本,所见即所得)编辑器
Dec 18 Javascript
Javascript单元测试框架QUnitjs详细介绍
May 08 Javascript
JavaScript中的闭包(Closure)详细介绍
Dec 30 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
Apr 20 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
May 17 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
Jul 27 Javascript
jQuery弹出窗口打开链接的实现代码
Dec 24 Javascript
js 性能优化之算法和流程控制
Feb 15 Javascript
详解webpack编译多页面vue项目的配置问题
Dec 11 Javascript
详解使用React制作一个模态框
Mar 14 Javascript
vue+canvas实现拼图小游戏
Sep 18 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
新的一年,新的期待:DC在2020年的四部动画电影
2020/01/01 欧美动漫
Yii结合CKEditor实现图片上传功能
2014/06/13 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
在表单提交前进行验证的几种方式整理
2013/07/31 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
2014/03/27 Javascript
jQuery $.extend()用法总结
2014/06/15 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
nodejs爬虫抓取数据乱码问题总结
2015/07/03 NodeJs
jquery不常用方法汇总
2015/07/26 Javascript
avalon js实现仿微博拖动图片排序
2015/08/14 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
2016/12/20 Javascript
JavaScript实现反转字符串的方法详解
2017/04/27 Javascript
详解node+express+ejs+bootstrap构建项目
2017/09/27 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
2019/11/05 Javascript
python使用urlparse分析网址中域名的方法
2015/04/15 Python
Python实现字典的key和values的交换
2015/08/04 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
Python 获取当前所在目录的方法详解
2017/08/02 Python
Python找出微信上删除你好友的人脚本写法
2018/11/01 Python
Python实现代码统计工具
2019/09/19 Python
Python高阶函数、常用内置函数用法实例分析
2019/12/26 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
QML实现钟表效果
2020/06/02 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
CAD制图设计师自荐信
2014/01/29 职场文书
大学生优秀团员事迹材料
2014/01/30 职场文书
家长通知书教师评语
2014/04/17 职场文书
青年标兵事迹材料
2014/08/16 职场文书
地球上的星星观后感
2015/06/02 职场文书
初中政治教学工作总结
2015/08/13 职场文书
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android