js input复选框选中父级同时子级也选中
js实现复选框选中父级元素子级元素也选中,没有子级元素选中父级也不选中的效果

HTML
<tr>
<td>
<label>
<input name="rules[]" value="15" checked="checked" dataid="id-15" class="inverted checkbox-parent " type="checkbox">
<span style="font-weight:bold; font-size:14px;" class="text">管理员</span>
</label>
</td>
<tr>
<td>
<label>
<input name="rules[]" value="16" checked="checked" dataid="id-15-16" class="inverted checkbox-parent checkbox-child " type="checkbox">
<span class="text">管理员列表</span>
</label>
</td>
</tr>
</tr>
<tr>
<td>
<label>
<input name="rules[]" value="19" checked="checked" dataid="id-15-16-19" class="inverted checkbox-parent checkbox-child " type="checkbox">
<span class="text">管理员修改</span>
</label>
</td>
</tr>
<tr>
<td>
<label>
<input name="rules[]" value="18" checked="checked" dataid="id-15-16-18" class="inverted checkbox-parent checkbox-child " type="checkbox">
<span class="text">管理员删除</span>
</label>
</td>
</tr>
<tr>
<td>
<label>
<input name="rules[]" value="17" checked="checked" dataid="id-15-16-17" class="inverted checkbox-parent checkbox-child " type="checkbox">
<span class="text">管理员添加</span>
</label>
</td>
</tr>
JS代码
<script type="text/javascript">
/* 权限配置 */
$(function() {
//动态选择框,上下级选中状态变化
//选中父级,所有子级也选中
$('input.checkbox-parent').on('change', function() {
//动态选择框,上下级选中状态变化
var dataid = $(this).attr("dataid");
console.log(dataid);
$('input[dataid^=' + dataid + ']').prop('checked', $(this).is(':checked'));
//[dataid^=value]匹配指定属性以value开始的input元素,和正则^以xx开始相似
//prop()函数用于设置或返回当前jQuery对象所匹配的元素的属性值。
//is() 根据选择器、元素或 jQuery 对象来检测匹配元素集合,如果这些元素中至少有一个元素匹配给定的参数,则返回 true。
}); //子级选择状态
$('input.checkbox-child').on('change', function() {
//获取子元素的dataid值
var dataid = $(this).attr("dataid");
//截取子元素的dataid值以最后一个“-”为终
dataid = dataid.substring(0, dataid.lastIndexOf("-"));
var parent = $('input[dataid=' + dataid + ']');
if($(this).is(':checked')) {
parent.prop('checked', true);
//循环到顶级
while(dataid.lastIndexOf("-") != 2) {
dataid = dataid.substring(0, dataid.lastIndexOf("-"));
parent = $('input[dataid=' + dataid + ']');
parent.prop('checked', true);
}
} else {
//没子元素勾选,父级也取消勾选
//父级
if($('input[dataid^=' + dataid + '-]:checked').length == 0) {
parent.prop('checked', false);
//循环到顶级
while(dataid.lastIndexOf("-") != 2) {
dataid = dataid.substring(0, dataid.lastIndexOf("-"));
parent = $('input[dataid=' + dataid + ']');
if($('input[dataid^=' + dataid + '-]:checked').length == 0) {
parent.prop('checked', false);
}
}
}
}
});
});
</script>
js input复选框选中父级同时子级也选中的更多相关文章
- html+css+js实现复选框全选与反选
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- js实现复选框的全选、全不选和反选
js实现复选框的全选.全不选和反选 主要是用遍历的方法查找元素,然后通过改变checked的属性来选择,为true则是选中状态,为false则是未选状态 实现代码 <!DOCTYPE html& ...
- js操作复选框 复选框
//复选框点击事件 function checkAll(){ let tp=$("#tp").val(); let all=$("input[name='id']&quo ...
- js操作复选框
js操作复选框 JavaScript 代码: //复选框全选 $(function () { $("#select_all").click(function () { $(&quo ...
- js实现复选框全选/全不选/反选
js实现复选框全选/全不选/反选 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...
- 复选框全选、反选及根据值JS控制复选框默认选中事件
HTML代码 <div class="col-sm-7"> <input type="checkbox" id="allAndNot ...
- js实现复选框的全选、全不选、反选
js中实现复选框的全选,全不选以及反选,分为两种情况: (1)选中“请选择”前面的复选框实现全选,不选中“请选择”前面的复选框实现全不选 <!DOCTYPE html PUBLIC " ...
- js 判断 复选框全选、全不选、反选、必选一个
一个挺 使用的 js 代码片段, 判断 复选框全选.全不选.反选.必选一个 记录下, 搬来的 思路: 修改数据的 选中与否状态, 拿到所有的输入框,看是否有选中的状态 <html> & ...
- jQuery获取input复选框的值
var ipResolveValue =[]; //定义一个空数组$("input[name='ipResolve']:checked").each(function(){ / ...
随机推荐
- git安装、git和GitHub的配合使用、git和码云的配合使用
1 git安装请参见廖雪松的git教程前面几节 点击前往 2 git速成之基本命令 点击前往 3 git 和 GitHub 配合使用之基础 点击前往 4 git 和 GitHub 配合使用之进阶 点击 ...
- 主键primary key和唯一索引unique index
1)主键一定是唯一性索引,唯一性索引并不一定就是主键. 2)主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引. 3)主键常常与外键构成参照完整性约束,防止出现数 ...
- 算法Sedgewick第四版-第1章基础-1.4 Analysis of Algorithms-003定理
1. 2. 3. 4. 5. 6.
- 算法Sedgewick第四版-第1章基础-008一用数组实现栈(泛型、可变大小)
package algorithms.ADT; /*************************************************************************** ...
- Qemu虚拟机 玩树莓派最新版系统 (截止2017-04-10)
Qemu虚拟机可以玩 树莓派,大家都知道了吧.可是网上的教程好老,都是2012年的.我按照教程下载了最新版版本的树莓派系统怎么也跑不起来. 研究了好久,终于找到一个简单的方法,特意分享出来.转载请注意 ...
- 初识Servlet(JSP)
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层. Servle ...
- 【Android4高级编程笔记】深入探讨Android Activity
创建Activity 要创建一个新的Activity,需要对Activity类进行扩展,在新类定义用户界面并实现新的功能. 视图是用来显示数据和提高用户交互的Ui控件.Android提供了多个布局类, ...
- 【Android开源】CircleImageView自定义圆形控件的使用
github地址:https://github.com/hdodenhof/CircleImageView package de.hdodenhof.circleimageview; import e ...
- 【C#】EF学习<一> CodeFist
[第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) 目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) http://www.cnblogs.com/ ...
- The King’s Problem 强连通
题意 有n个城市 m条有向边 将n个城市分成几个州 1.强连通必定在一个州里 2.州里的任意两个城市 u,v 满足u到v 或者v到u 其一即可 先缩点 然后求最小路就覆盖 #inclu ...