关于checkbox全选的问题
来源:互联网 发布:金蝶软件精斗云 编辑:程序博客网 时间:2024/05/21 17:13
今天要来写一个关于checkbox全选的问题,早上帮同学做了个例子,发现我对于这里面还是很混乱的,所以要做一个例子合集来提醒自己一下。
分为两种 一种是直接使用checkbox 一种是使用背景图片
checkbox
<input type="checkbox" id="All" /><div class="other" id="otherBox"> <input type="checkbox" /> <input type="checkbox" /> <input type="checkbox" /></div>
这是我的结构
第一种 jq写法
现在来写行为,引入的是jquery-1.12.3.js这个版本的jQuery
// 这个是全选的按钮 判断如果全选勾选那么其他的input都需要勾选 如果取消 则剩下的input都取消$('#All').click(function() { if($(this).is(":checked")) { $('.other').children('input').each(function() { $(this).prop("checked", true); }) } else { $('.other').children('input').each(function() { $(this).prop("checked", false); }) }})// 这个是单个勾选 其实可以不用再写出来 但是我为了判断当我全部勾选时 全选也会自动被勾上$('.other').children('input').on('click', function() { if($(this).is(":checked")) { $(this).prop("checked", true); judge(); } else { $(this).prop("checked", false); judge(); }});// 这是为了判断是否全部勾选所做的一个函数function judge() { $('.other').children('input').each(function() { if($(this).is(':checked')) { $('#All').prop("checked", true); } else { $('#All').prop("checked", false); } })}
第二种 JS写法
// 这里开始获取ID名var All = document.getElementById('All'); var otherBoxs = document.getElementById('otherBox').children;// 全选All.onclick = function() { if(All.checked) { for(var i = 0 ; i < otherBoxs.length; i++) { otherBoxs[i].checked = true; } } else { for(var i = 0 ; i < otherBoxs.length; i++) { otherBoxs[i].checked = false; } } }var checkLen = 0;// 单选for(var i = 0; i < otherBoxs.length; i++) { otherBoxs[i].onclick = function(num) { return function() { if(otherBoxs[num].checked) { checkLen++; judge(); } else { checkLen--; judge(); } } }(i);}// 判断function judge() { if(checkLen == otherBoxs.length) { All.checked = true; } else { All.checked = false; }}
我用JS写的时候,在单选用了一个闭包,试了一下别的方法,结果没有成功,我觉得用上闭包有点复杂,等以后看一下还有没有更好的办法。
背景图片
其实我觉得相对于checkbox来说,背景图片会较为简单一些,因为只需要用类名转换就可以实现了
先看结构样式
<style type="text/css"> #All { width: 16px; height: 16px; } .normal { background: url('../images/b-btn.png'); } .select { background: url('../images/b-btn1.png'); } .other span { display: block; width: 16px; height: 16px; }</style><div class="normal" id="All"></div><div class="other" id="otherBox"> <span class="normal"></span> <span class="normal"></span> <span class="normal"></span></div>
勾选是select 未勾选为normal
第一种 jq写法
$('#All').on('click', function() { if($(this).is('.select')) { $(this).removeClass('select'); $('.other').find('span').removeClass('select'); } else { $(this).addClass('select'); $('.other').find('span').addClass('select'); }});var secArr = [];$('.other').find('span').on('click', function() { if($(this).is('.select')) { $(this).removeClass('select'); secArr.pop('1'); judge(); } else { $(this).addClass('select'); secArr.push('1'); judge(); }});function judge() { if(secArr.length == $('.other').find('span').length) { $('#All').addClass('select'); } else { $('#All').removeClass('select'); }}
第二种 JS写法
var All = document.getElementById('All');var otherBoxs = document.getElementById('otherBox').children;var AllClick = true;All.onclick = function() { if(AllClick) { All.className = "select"; AllClick = false; for(var i = 0; i < otherBoxs.length; i++) { otherBoxs[i].className = "select"; } } else { All.className = "normal"; AllClick = true; for(var i = 0; i < otherBoxs.length; i++) { otherBoxs[i].className = "normal"; } }}var checkLen = 0;for(var i = 0; i < otherBoxs.length; i++) { otherBoxs[i].onclick = function() { if((this.className == "normal")) { this.className = "select"; checkLen++; judge(); } else { this.className = "normal"; checkLen--; judge(); } }}function judge() { if(checkLen == otherBoxs.length) { All.className = "select"; } else { All.className = "normal"; }}
其实我觉得不管是用背景图还是checkbox,其中的中心思想都是一样的~
希望以后能有更好的办法!
2 0
- 关于checkbox的全选问题
- 关于checkbox全选的问题
- checkbox 全选的问题
- 关于checkbox的全选功能
- [转]关于treeview中的checkbox的全选问题
- [转]关于treeview中的checkbox的全选问题
- 关于jQuery实现CheckBox全选只能生效一次的问题
- 关于jquery中checkbox全选一次问题
- 关于checkBox的全选,反选和验证checkBox是否被选中的问题
- 关于checkbox的全选/全不选的处理
- 关于Gridview中CheckBox全选的取消
- checkbox让checkboxlist全选的问题
- DataGridView里的Checkbox全选问题
- 全选checkbox只能执行一次的问题
- Repeater/CheckBox 全选问题
- 关于checkbox的问题
- 关于CheckBox的问题
- checkbox的全选、全不选
- QueryRunner 结果处理器
- Android-ViewPagerIndicator使用方法
- 机器学习中的相似性度量
- Android开发笔记之主题背景的修改(设置Theme.NoTitleBar后Activity背景变成黑色)
- Android-----借助MINA框架实现长连接、短连接以及断线重连
- 关于checkbox全选的问题
- 打印机 针式打印机 热敏打印机
- bzoj1085骑士精神 题解(IDA*入门题)
- NOJ 1042 区间最值
- Map按值排序
- 第四章Response和增删改查(2)
- ViewPager欢迎界面到引导界面的的实现之一
- 扩展kmp算法
- 基于Zabbix + Docker开发的监控系统