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文件IE6报语法错误或缺少对象问题的解决方法
Jan 09 Javascript
JavaScript实现点击自动选择TextArea文本的方法
Jul 02 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
Nov 29 Javascript
jQuery实现获取绑定自定义事件元素的方法
Dec 02 Javascript
JavaScript中绑定事件的三种方式及去除绑定
Nov 05 Javascript
JavaScript中offsetWidth的bug及解决方法
May 17 Javascript
Vue2.0 vue-source jsonp 跨域请求
Aug 04 Javascript
微信小程序url与token设置详解
Sep 26 Javascript
vue-cli脚手架引入图片的几种方法总结
Mar 13 Javascript
对类Vue的MVVM前端库的实现代码
Sep 07 Javascript
node.js实现上传文件功能
Jul 15 Javascript
详解Vue中的基本语法和常用指令
Jul 23 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图片加中文水印实现代码分享
2012/10/31 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
2015/04/15 PHP
PHP+Ajax实时自动检测是否联网的方法
2015/07/01 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
2016/05/20 PHP
innerHTML,outerHTML,innerTEXT三者之间的区别
2007/01/28 Javascript
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
jQuery插件实现适用于移动端的地址选择器
2016/02/18 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
详解如何让Express支持async/await
2017/10/09 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
vue elementUI使用tabs与导航栏联动
2019/06/21 Javascript
ES6 let和const定义变量与常量的应用实例分析
2019/06/27 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
2019/08/20 Javascript
vue Tab切换以及缓存页面处理的几种方式
2019/11/05 Javascript
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
python中pycurl库的用法实例
2014/09/30 Python
利用Python学习RabbitMQ消息队列
2015/11/30 Python
深入解析Python中的上下文管理器
2016/06/28 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
2018/04/25 Python
pyttsx3实现中文文字转语音的方法
2018/12/24 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
Python GUI编程完整示例
2019/04/04 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
ANINE BING官方网站:奢华的衣橱基本款和时尚永恒的单品
2019/11/26 全球购物
小学教师自我鉴定
2013/11/07 职场文书
机房搬迁方案
2014/05/01 职场文书
2014年教师节寄语
2014/08/11 职场文书
2014离婚协议书范文
2014/09/10 职场文书
大学新生军训自我鉴定范文
2014/09/13 职场文书
2014年青年志愿者工作总结
2014/12/09 职场文书
材料员岗位职责范本
2015/04/11 职场文书
费城故事观后感
2015/06/10 职场文书
上级领导检查欢迎词
2015/09/30 职场文书