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中实现私有属性的写类方式(一)
Dec 04 Javascript
JavaScript自定义日期格式化函数详细解析
Jan 14 Javascript
JavaScript中对象介绍
Dec 31 Javascript
纯js实现重发验证码按钮倒数功能
Apr 21 Javascript
jscript读写二进制文件的方法
Apr 22 Javascript
JS深度拷贝Object Array实例分析
Mar 31 Javascript
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
Oct 05 Javascript
JS实现物体带缓冲的间歇运动效果示例
Dec 22 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
Jan 22 Javascript
js获取元素下的第一级子元素的方法(推荐)
Mar 05 Javascript
js数组去重的N种方法(小结)
Jun 07 Javascript
JSON 入门教程基础篇 json入门学习笔记
Sep 22 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
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
PHP中使用CURL伪造来路抓取页面或文件
2011/05/04 PHP
php文档更新介绍
2011/07/22 PHP
php中动态修改ini配置
2014/10/14 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
2015/12/10 PHP
PHP实现导出excel数据的类库用法示例
2016/10/15 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
PHP+Session防止表单重复提交的解决方法
2018/04/09 PHP
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
js 走马灯简单实例
2013/11/21 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
jQuery实现动画效果的简单实例
2014/01/27 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
javascript中的altKey 和 Event属性大全
2015/11/06 Javascript
js模式化窗口问题![window.dialogArguments]
2016/10/30 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
[01:25:33]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第二场 12.20
2020/12/23 DOTA
Python记录详细调用堆栈日志的方法
2015/05/05 Python
win与linux系统中python requests 安装
2016/12/04 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
Python模拟登录之滑块验证码的破解(实例代码)
2019/11/18 Python
Python递归函数特点及原理解析
2020/03/04 Python
Python稀疏矩阵及参数保存代码实现
2020/04/18 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
2020/05/18 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
详解Pycharm安装及Django安装配置指南
2020/09/15 Python
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
青年教师师德演讲稿
2014/08/26 职场文书
厉行节约工作总结
2015/08/12 职场文书
python基础之模块的导入
2021/10/24 Python
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL