解决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 Ajax使用FormData上传文件和其他数据后端web.py获取
Jun 11 jQuery
springmvc接收jquery提交的数组数据代码分享
Oct 28 jQuery
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
Apr 12 jQuery
如何用input标签和jquery实现多图片的上传和回显功能
May 16 jQuery
jQuery实现form表单序列化转换为json对象功能示例
May 23 jQuery
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
Dec 05 jQuery
Jquery实现获取子元素的方法分析
Aug 24 jQuery
jQuery实现弹出层效果
Dec 10 jQuery
9种方法优化jQuery代码详解
Feb 04 jQuery
jquery绑定事件 bind和on的用法与区别分析
May 22 jQuery
jQuery编写QQ简易聊天框
Aug 27 jQuery
jQuery zTree如何改变指定节点文本样式
Oct 16 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 XML操作的各种方法解析(比较详细)
2010/06/17 PHP
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
PHP利用二叉堆实现TopK-算法的方法详解
2017/04/24 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
总结PHP中初始化空数组的最佳方法
2019/02/13 PHP
使用PHPWord生成word文档的方法详解
2019/06/06 PHP
jquery键盘事件介绍
2011/01/31 Javascript
再谈javascript面向对象编程
2012/03/18 Javascript
js document.write()使用介绍
2014/02/21 Javascript
第七章之菜单按钮图标组件
2016/04/25 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
微信小程序 chooseImage选择图片或者拍照
2017/04/07 Javascript
详解vue 模版组件的三种用法
2017/07/21 Javascript
Vue多系统切换实现方案
2018/06/05 Javascript
mpvue将vue项目转换为小程序
2018/09/30 Javascript
详解三种方式解决vue中v-html元素中标签样式
2018/11/22 Javascript
JS实现数组删除指定元素功能示例
2019/06/05 Javascript
使用Bootstrap做一个朝代历史表
2019/12/10 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
前端深入理解Typescript泛型概念
2020/03/09 Javascript
详解vue修改elementUI的分页组件视图没更新问题
2020/11/13 Javascript
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
python算法学习之桶排序算法实例(分块排序)
2013/12/18 Python
python 专题九 Mysql数据库编程基础知识
2017/03/16 Python
Python中字符串List按照长度排序
2019/07/01 Python
Django项目中实现使用qq第三方登录功能
2019/08/13 Python
如何基于Python创建目录文件夹
2019/12/31 Python
深入理解css中vertical-align属性
2017/04/18 HTML / CSS
纽约著名的服装辅料来源:M&J Trimming
2017/07/26 全球购物
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
Invicta手表官方商店:百年制表历史的瑞士腕表品牌
2019/09/26 全球购物
山海经纬软件测试笔试题和面试题
2013/04/02 面试题
复核员上岗演讲稿
2014/01/05 职场文书
2016公务员年度考核评语
2015/12/01 职场文书
检讨书范文
2019/04/16 职场文书
Django cookie和session的应用场景及如何使用
2021/04/29 Python