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(){ / ...
随机推荐
- ROS Learning-006 beginner_Tutorials 编译ROS程序包
ROS Indigo beginner_Tutorials-05 编译 ROS 程序包 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.04 ...
- Python沙盒环境配置
一.简介 本文介绍配置python沙盒环境的方法步骤. 二.安装步骤 1.安装pyenv http://www.cnblogs.com/274914765qq/p/4948530.html 2.安装v ...
- javax.swing.Timer
javax.swing 类 Timer java.lang.Object javax.swing.Timer 所有已实现的接口: Serializable public class Timerexte ...
- Entity Framework Tutorial Basics(36):Eager Loading
Eager Loading: Eager loading is the process whereby a query for one type of entity also loads relate ...
- Java的post请求-----接口测试
本次主要是对登陆的接口测试post请求,希望记录在博客里面,一点一点的成长. package com.ju.Login; import java.io.BufferedReader; import j ...
- 安装windows系统备忘
1.已写入系统镜像的U盘 2.激活工具(同时激活系统及office) 3.如果没有网口或网线,需要准备万能网卡驱动 4.office 5.360 6.输入法 7.微信 8.谷歌浏览器
- C#知识点总结系列:3、C#中Delegate和Event
一.Delegate委托可以理解为一个方法签名. 可以将方法作为另外一个方法的参数带入其中进行运算.在C#中我们有三种方式去创建委托,分别如下: public delegate void Print( ...
- Django之高级视图与URL
Urls.py中有我们所有的路由映射关系.但是随着网站功能的增多,需要配置的URL也变得多了起来.并且维护这些导入也变得很麻烦.因此介绍一些优化和简洁的方法: 一 使用多个视图前缀: 之前所有的路由关 ...
- ubuntu - 14.04,安装Go语言(谷歌公司开发的一种语言)
Go语言下载地址:https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz 安装: 1,以root身份在shell里执行: ta ...
- loj #6077. 「2017 山东一轮集训 Day7」逆序对
#6077. 「2017 山东一轮集训 Day7」逆序对 题目描述 给定 n,k n, kn,k,请求出长度为 n nn 的逆序对数恰好为 k kk 的排列的个数.答案对 109+7 10 ^ 9 ...