我在面板标题中有一个复选框,我想要显示该面板。
<div class='panel'>
<div class='panel-header'>
<label for='check1'>
<input id='check1' type='checkbox' value='on'>
Checkbox Label
</label>
</div>
<div class='panel-content'>
</div>
</div>
我似乎无法构建一个选择器,该选择器将选择.panel-content
并仅在选中#check1
时使其可见。我需要能够选择元素.panel-content
的子.panel
,其中.panel
具有已检查的子输入。
答案 0 :(得分:1)
检查一下;)
工作:JSFiddle
$("#check1").on("change",function(){
var panelContent = $(this).parent().parent().parent().children(".panel-content");
if(this.checked) {
$(panelContent).show();
}else{
$(panelContent).hide();
}
});
// Get #check1 .panel-content
var panelCheckbox = $(".panel").children(".panel-header").children("label").children("#check1");
var panelContent;
if($(panelCheckbox).prop("checked") = true){
panelContent = $(panelCheckbox).parent().parent().parent().children(".panel-content");
}
答案 1 :(得分:0)
这是一个有效的jsfiddle:https://jsfiddle.net/o16v3a5j/3/
我希望这是你想要实现的目标吗?
首先:我添加了一个JS侦听器:
document.addEventListener('DOMContentLoaded', function () {
document.querySelector('#check1').addEventListener('change', reactToCheckbox);
});
每次听众响应复选框中的更改时, 更改panel-content
的{{1}}:
id
希望有所帮助,否则祝你好运。
答案 2 :(得分:0)
使用纯CSS实现此目的的唯一方法是删除checkbox
包装div.panel-header
以及label
以外的更改HTML,只要您在label
中拥有input
属性,我就需要在for=""
周围包裹label
,以便checkbox
位于与div.pnael-content
相同的级别,而不是更深的嵌套。
.panel-content {
display: none;
padding: 5px;
background: skyblue;
}
#check1:checked ~ .panel-content {
display: block;
}
<div class='panel'>
<div class='panel-header'></div>
<input id='check1' type='checkbox' checked>
<label for='check1'>Checkbox Label</label>
<div class='panel-content'>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Praesentium quis nesciunt et, maiores sint voluptatum enim earum non illum temporibus velit reprehenderit dignissimos cum minima! Voluptatem voluptas delectus fugiat molestiae.
</div>
</div>