Javascript 复选框树视图,同时嵌套父级和子级。?
我正在尝试创建多个复选框的树状视图,因为树状结构一切正常,我只是无法实现当子复选框被选中时让其父复选框也被选中的目标。我从中找到了榜样Javascript 复选框树视图,同时嵌套父级和子级。?,javascript,html,jquery,css,Javascript,Html,Jquery,Css,我正在尝试创建多个复选框的树状视图,因为树状结构一切正常,我只是无法实现当子复选框被选中时让其父复选框也被选中的目标。我从中找到了榜样 权限* 图书馆 文件 我的文件 下载 项目 音乐 我的音乐 公共音乐 图片 我的照片 公共图片 视频 我的视频 公共视频 下面是所需的javascript代码 <script> $(".acidjs-css3-treeview")
权限*
-
图书馆
-
文件
-
我的文件
-
下载
-
项目
-
音乐
-
我的音乐
-
公共音乐
-
图片
-
我的照片
-
公共图片
-
视频
-
我的视频
-
公共视频
下面是所需的javascript代码
<script>
$(".acidjs-css3-treeview").delegate("label input:checkbox", "change", function() {
var
checkbox = $(this),
nestedList = checkbox.parent().next().next(),
nestedListp = checkbox.parent().prev().prev(),
selectNestedListCheckbox = nestedList.find("label:not([for]) input:checkbox");
selectNestedListCheckboxp = nestedListp.find("label:not([for]) input:checkbox");
if(checkbox.is(":checked")) {
return selectNestedListCheckbox.prop("checked", true);
return selectNestedListCheckboxp.prop("checked", true);
}
selectNestedListCheckbox.prop("checked", false);
});
</script>
$(.acidjs-css3-treeview”).delegate(“标签输入:复选框”,“更改”,函数(){
变量
复选框=$(此),
nestedList=checkbox.parent().next().next(),
nestedListp=checkbox.parent().prev().prev(),
selectNestedListCheckbox=nestedList.find(“标签:非([for])输入:复选框”);
选择NestedListCheckboxp=nestedListp.find(“标签:非([for])输入:复选框”);
如果(复选框为(“:选中”)){
返回selectNestedListCheckbox.prop(“选中”,true);
返回SelectedNestedListCheckboxP.prop(“选中”,true);
}
选择NestedListCheckbox.prop(“选中”,false);
});
下面是演示
$(函数(){
$('input[type=“checkbox”]”)。更改(checkboxChanged);
函数checkboxChanged(){
变量$this=$(this),
checked=$this.prop(“checked”),
容器=$this.parent(),
兄弟姐妹=容器。兄弟姐妹();
container.find('input[type=“checkbox”]”)
.道具({
不确定:错误,
勾选:勾选
})
.兄弟姐妹('标签')
.removeClass('自定义检查自定义未检查自定义不确定')
.addClass(选中?'custom checked':'custom unchecked');
检查兄弟(容器,已检查);
}
函数检查(el,已检查){
var parent=$el.parent().parent(),
全部=正确,
不确定=错误;
$el.sides().each(函数()){
返回all=($(this).children('input[type=“checkbox”]”).prop(“checked”)==checked);
});
如果(全部选中(&D){
parent.children('input[type=“checkbox”]”)
.道具({
不确定:错误,
勾选:勾选
})
.兄弟姐妹('标签')
.removeClass('自定义检查自定义未检查自定义不确定')
.addClass(选中?'custom checked':'custom unchecked');
检查兄弟姐妹(父母,已检查);
}
else if(全部&!选中){
不确定=父.find('input[type=“checkbox”]:checked')。长度>0;
parent.children('input[type=“checkbox”]”)
.prop(“选中”,选中)
.prop(“不确定”,不确定)
.兄弟姐妹('标签')
.removeClass('自定义检查自定义未检查自定义不确定')
.addClass(不确定?“自定义不确定”:(选中?“自定义已选中”:“自定义未选中”);
检查兄弟姐妹(父母,已检查);
}
否则{
$el.parents(“li”).children('input[type=“checkbox”]”)
.道具({
不确定:对,
勾选:假
})
.兄弟姐妹('标签')
.removeClass('自定义检查自定义未检查自定义不确定')
.addClass(“自定义不确定”);
}
}
});代码>
*{margin:0;padding:0;}
#换页{
保证金:自动0;
}
treeview先生{
利润率:10px20px;
}
ul{
列表样式:无;
}
李树荣先生{
背景:url(http://jquery.bassistance.de/treeview/images/treeview-default-line.gif)0 0不重复;
填充:2px 0 2px 16px;
}
.treeview>li:第一个孩子>标签{
/*根元素的样式-IE8支持:第一个子元素
但不是:最后一个孩子*/
}
李树景先生{
背景位置:0-1766px;
}
.treeview li>输入{
高度:16px;
宽度:16px;
/*隐藏输入,但将其保留在带有事件的布局中(使用不透明度)*/
不透明度:0;
过滤器:alpha(不透明度=0);/*internet explorer*/
-ms过滤器:“progid:DXImageTransform.Microsoft.Alpha(不透明度=0)”;/*IE8*/
}
.treeview li>标签{
背景:url(https://www.thecssninja.com/demo/css_custom-forms/gr_custom-inputs.png)0-1px不重复;
/*向左移动以覆盖原始复选框区域*/
左边距:-20px;
/*填充文本以便为图像腾出空间*/
左侧填充:20px;
}
/*未选中的样式*/
.treeview。自定义未选中{
背景位置:0-1px;
}
treeview先生
<script>
$(".acidjs-css3-treeview").delegate("label input:checkbox", "change", function() {
var
checkbox = $(this),
nestedList = checkbox.parent().next().next(),
nestedListp = checkbox.parent().prev().prev(),
selectNestedListCheckbox = nestedList.find("label:not([for]) input:checkbox");
selectNestedListCheckboxp = nestedListp.find("label:not([for]) input:checkbox");
if(checkbox.is(":checked")) {
return selectNestedListCheckbox.prop("checked", true);
return selectNestedListCheckboxp.prop("checked", true);
}
selectNestedListCheckbox.prop("checked", false);
});
</script>