我有一个父子类别复选框,子项有子子。只有在单击父类别时才会显示子类别,并且当未选中父类别时,所有子类别都需要隐藏。
每件事情都运作良好,但是当假设孩子和子女孩被检查时。现在当取消选中超级父级时,它会隐藏选中的子复选框,该子复选框应该取消选中。
这是我的代码。
$(function () {
$(':checkbox').change(function () {
$("input[type='checkbox']:checked").each(function () {
var inner_id = $(this).attr('id');
if (inner_id.search("parent") > -1) {
// $("input."+inner_id).attr('hidden','false')
$("."+inner_id).removeAttr("hidden");
}
});
});
});
$(function () {
$(':checkbox').click(function () {
var is_chk = $(this).attr('checked');
var its_id = $(this).attr('id');
if (is_chk != 'checked') {
$("."+its_id).attr('hidden', 'true');
}
});
});
这个的HTML代码是。
<input type="checkbox" id="parent1" />parent<br/>
<input type="checkbox" class="parent1" disabled="true" />child1<br/>
<input type="checkbox" class="parent1" disabled="true"/>child2<br/>
<input type="checkbox" class="parent1" disabled="true"/>child3<br/>
<input type="checkbox" id="parent2" />parent<br/>
<input type="checkbox" class="parent2" disabled="true"/>child1<br/>
<input type="checkbox" class="parent2"
id="parent3" disabled="true"/>child2-parent<br/>
<input type="checkbox"
class="parent3" disabled="true"/>child1<br/>
<input type="checkbox"
class="parent3" disabled="true"/>child2<br/>
<input type="checkbox"
class="parent3" disabled="true"/>child3<br/>
<input type="checkbox"
class="parent3" disabled="true"/>child4<br/>
<input type="checkbox"
class="parent3" id="parent4" disabled="true"/>child5-parent<br/>
<input type="checkbox"
class="parent4" disabled="true"/>child1<br/>
<input type="checkbox"
class="parent4" disabled="true"/>child2<br/>
或者你可以在这里试试。
只需勾选所有复选框并单击父级即可了解我的问题。 感谢。
我在项目中尝试过的实际代码是。
$(function() {
$(':checkbox').change(function() {
$("input[type='checkbox']:checked").each(function() {
//var inner_id = $(this).attr('id');
var inner_id = $(this).attr('value');
var parId1="input."+inner_id;
var parId2="."+inner_id;
$(parId1).removeAttr("disabled");
$(parId2).removeAttr("hidden");
});
});
});
$(function() {
$(':checkbox').click(function() {
var is_chk = $(this).attr('checked');
var its_id = $(this).attr('value');
//var parId2="#"+its_id;
var parId1="input."+its_id;
var parId2="."+its_id;
if(is_chk!='checked') {
$(parId1).removeAttr("checked");
$(parId1).attr('disabled','true');
$(parId2).attr('hidden','true');
}
});
});
答案 0 :(得分:0)
我不认为你写的是什么作品,只是看到了你的小提琴。但如果这就是你想要的,那么你可以尝试在第二个函数中添加这一行:
$("."+its_id).attr('checked', false);
前
$("."+its_id).attr('hidden', 'true');