解决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 相关文章推荐
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
Apr 21 jQuery
jQuery Validate 校验多个相同name的方法
May 18 jQuery
jQuery实现节点的追加、替换、删除、复制功能示例
Jul 11 jQuery
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
Jan 21 jQuery
jquery 输入框查找关键字并提亮颜色的实例代码
Jan 23 jQuery
jQuery中的类名选择器(.class)用法简单示例
May 14 jQuery
通过jquery.cookie.js实现记住用户名、密码登录功能
Jun 20 jQuery
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
Jul 25 jQuery
jQuery easyui datagird编辑行删除行功能的实现代码
Sep 20 jQuery
使用jquery Ajax实现上传附件功能
Oct 23 jQuery
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
Apr 10 jQuery
jquery.tagsinput.js实现记录checkbox勾选的顺序
Sep 21 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
怎么使 Mysql 数据同步
2006/10/09 PHP
php实现rc4加密算法代码
2012/04/25 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
彻底搞懂PHP 变量结构体
2017/10/11 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
jquery ajax 登录验证实现代码
2009/09/23 Javascript
jquery插件制作 自增长输入框实现代码
2012/08/17 jQuery
如何判断鼠标是否在DIV的区域内
2013/11/13 Javascript
使用js判断数组中是否包含某一元素(类似于php中的in_array())
2013/12/12 Javascript
javascript实现的HashMap类代码
2014/06/27 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
2014/09/01 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
2014/10/17 Javascript
javascript生成img标签的3种实现方法(对象、方法、html)
2015/12/25 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
js封装成插件的步骤方法
2017/09/11 Javascript
一步步教会你微信小程序的登录鉴权
2018/04/09 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
2019/04/22 Javascript
Vue 动态添加路由及生成菜单的方法示例
2019/06/20 Javascript
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
element-ui点击查看大图的方法示例
2020/12/14 Javascript
[01:57]DOTA2上海特锦赛小组赛解说单车采访花絮
2016/02/27 DOTA
[08:54]DOTA2-DPC中国联赛 正赛 Aster vs LBZS 选手采访
2021/03/11 DOTA
python机器学习之神经网络(二)
2017/12/20 Python
python实现简单成绩录入系统
2019/09/19 Python
世界著名的顶级牛排:Omaha Steak(奥马哈牛排)
2016/09/20 全球购物
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
网上常见的一份Linux面试题(多项选择部分)
2015/02/07 面试题
办公室内勤工作职责
2013/12/11 职场文书
好的促销活动方案
2014/08/21 职场文书
用人单位终止解除劳动合同证明书
2014/10/06 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
教师党员群众路线教育实践活动心得体会
2014/11/04 职场文书
读书笔记怎么写
2015/07/01 职场文书
2016年六一文艺汇演开幕词
2016/03/04 职场文书
MySQL慢查询的坑
2021/04/28 MySQL