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 相关文章推荐
ext 列表页面关于多行查询的办法
Mar 25 Javascript
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
Mar 24 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
Apr 12 Javascript
jQuery实现行文字链接提示效果的方法
Mar 10 Javascript
对Web开发中前端框架与前端类库的一些思考
Mar 27 Javascript
将JSON字符串转换成Map对象的方法
Nov 30 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
Apr 01 Javascript
将Sublime Text 3 添加到右键中的简单方法
Dec 12 Javascript
浅谈webpack性能榨汁机(打包速度优化)
Jan 09 Javascript
vue-router 按需加载 component: () =&gt; import() 报错的解决
Sep 22 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
Nov 16 Javascript
JavaScript缓动动画函数的封装方法
Nov 25 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
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
jQuery实现级联菜单效果(仿淘宝首页菜单动画)
2014/04/10 Javascript
实现前后端数据交互方法汇总
2015/04/07 Javascript
nodejs 中模拟实现 emmiter 自定义事件
2016/02/22 NodeJs
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
2016/08/29 Javascript
关于vue.js过渡css类名的理解(推荐)
2017/04/10 Javascript
jquery.masonry瀑布流效果
2017/05/25 jQuery
基于nodejs 的多页面爬虫实例代码
2017/05/31 NodeJs
浅析vue深复制
2018/01/29 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
webpack3里使用uglifyjs压缩js时打包报错的解决
2018/12/13 Javascript
Vue动态组件与异步组件实例详解
2019/02/23 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
2019/08/20 Javascript
Python编程中字符串和列表的基本知识讲解
2015/10/14 Python
python解决网站的反爬虫策略总结
2016/10/26 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
PyQt5每天必学之关闭窗口
2018/04/19 Python
Python和Go语言的区别总结
2019/02/20 Python
pytorch 模型的train模式与eval模式实例
2020/02/20 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
使用CSS3的font-face字体嵌入样式的方法讲解
2016/05/13 HTML / CSS
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
Araks官网:纽约内衣品牌
2020/10/15 全球购物
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
粗加工管理制度
2014/02/04 职场文书
集中采购方案
2014/06/10 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
2014幼儿园教师个人工作总结
2014/11/08 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
2014年医务科工作总结
2014/12/18 职场文书
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL
vue特效之翻牌动画
2022/04/20 Vue.js
解决Oracle数据库用户密码过期
2022/05/11 Oracle
win11电脑关机鼠标灯还亮怎么解决? win11关机后鼠标灯还亮解决方法
2023/01/09 数码科技