解决JQuery全选/反选第二次失效的问题


Posted in jQuery onOctober 11, 2017

最近在项目中,遇到一个问题,测试全选/反选功能时,第一次对母框进行选中/非选中时,能同步子框的全选/反选状态,之后再点击母框,子框就没反应了。

原代码大致结构关键如下:

function selectAll(obj){
    $('input[name="xxx[]"]').attr("checked",obj.checked);
}

<input type="checkbox" id="mother" name="mother" onclick="selectAll(this);"/>全选

<input type="checkbox" id="son1" name="xxx[]" />子框<input type="checkbox" id="son2" name="xxx[]" />子框<input type="checkbox" id="son3" name="xxx[]" />子框<input type="checkbox" id="son4" name="xxx[]" />子框

步骤一:尝试正面刚一波:

function selectAll(obj){
   if(obj.checked) {
    $('input[name="xxx[]"]').attr("checked", true);
   } else {
    $('input[name="xxx[]"]').removeAttr("checked");
   }
}

卒-----完全没有效果,弃之。

步骤二:快速上网搜索一番,发现这个问题比较常见,在遇到过这个问题的人里,我应该排在千里之外了。点开几个看了,基本都是说用prop替代attr便能解决,奈何如下:

解决JQuery全选/反选第二次失效的问题

然而项目上用的版本低于1.6并被告知最好不要更改版本,同弃之。

步骤三:无可奈何,JQuery弃之...尝试改用原生js写法,代码如下:

function selectAll(obj){
 var xxx = document.getElementsByName("xxx[]");
  if(obj.checked) {
   for(var i = 0;i < xxx.length;i++) {
    xxx[i].checked = true;
   }
  } else {
   for(var i = 0;i < xxx.length;i++) {
    xxx[i].checked = false;
   }
  }
}

测试一下,顺利解决。其实也算是个小问题,不过给了我一些启示,不能局限在一个框里,多换个角度思考问题,往往能更好地去解决问题。

以上这篇解决JQuery全选/反选第二次失效的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jquery请求servlet实现ajax异步请求的示例
Jun 03 jQuery
简单谈谈require模块化jquery和angular的问题
Jun 23 jQuery
jQuery实现可兼容IE6的遮罩功能详解
Sep 19 jQuery
jquery中有哪些api jQuery主要API
Nov 20 jQuery
JQuery元素快速查找与操作
Apr 22 jQuery
jquery 通过ajax请求获取后台数据显示在表格上的方法
Aug 08 jQuery
jQuery常见的遍历DOM操作详解
Sep 05 jQuery
jQuery+Datatables实现表格批量删除功能【推荐】
Oct 24 jQuery
jQuery实现适用于移动端的跑马灯抽奖特效示例
Jan 18 jQuery
JQuery样式与属性设置方法分析
Dec 07 jQuery
jQuery zTree如何改变指定节点文本样式
Oct 16 jQuery
jquery实现抽奖功能
Oct 22 jQuery
jQuery实现的form转json经典示例
Oct 10 #jQuery
认识jQuery的Promise的具体使用方法
Oct 10 #jQuery
jQuery实现获取table中鼠标click点击位置行号与列号的方法
Oct 09 #jQuery
jQuery插件artDialog.js使用与关闭方法示例
Oct 09 #jQuery
jQuery实现html双向绑定功能示例
Oct 09 #jQuery
jqueryUI tab标签页代码分享
Oct 09 #jQuery
jQuery ajax调用webservice注意事项
Oct 08 #jQuery
You might like
关于在php.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
zf框架的数据库追踪器使用示例
2014/03/13 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
PHP运用foreach神奇的转换数组(实例讲解)
2018/02/01 PHP
JQuery UI皮肤定制
2009/07/27 Javascript
斜45度寻路实现函数
2009/08/20 Javascript
javascript学习(一)构建自己的JS库
2013/01/02 Javascript
ExtJS的拖拽效果示例
2013/12/09 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
2014/09/24 Javascript
JQuery实现展开关闭层的方法
2015/02/17 Javascript
js实现从中间开始往上下展开网页窗口的方法
2015/03/02 Javascript
javascript实现手机震动API代码
2015/08/05 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
2016/01/28 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
2017/08/11 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
2018/08/24 Javascript
深入理解Node内建模块和对象
2019/03/12 Javascript
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
JavaScript修改注册表实例代码
2020/01/05 Javascript
JavaScript设计模式之策略模式实现原理详解
2020/05/29 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
python zip文件 压缩
2008/12/24 Python
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
Python编程实现正则删除命令功能
2017/08/30 Python
Python内置函数reversed()用法分析
2018/03/20 Python
python增加矩阵维度的实例讲解
2018/04/04 Python
Python实现的批量修改文件后缀名操作示例
2018/12/07 Python
python 无损批量压缩图片(支持保留图片信息)的示例
2020/09/22 Python
Python抖音快手代码舞(字符舞)的实现方法
2021/02/07 Python
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
员工培训邀请函
2014/01/11 职场文书
房产继承公证书
2014/04/09 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
银行安全保卫工作总结
2015/08/10 职场文书