【发布时间】:2016-03-12 20:36:02
【问题描述】:
我在我的页面上有嵌套的复选框,如果我点击父复选框,子复选框被选中,到目前为止还可以。但是如果我点击子复选框,我希望父点击必须被取消选中怎么办?
html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>No Title</title>
</head>
<body>
<div class="new-checkbox">
<ul>
<li>
<input type="checkbox" id="input1"><label for="input1">kategori 1</label>
<ul>
<li><input type="checkbox" id="input11"><label for="input11">kategori 11</label></li>
<li><input type="checkbox" id="input12"><label for="input12">kategori 12</label></li>
<li><input type="checkbox" id="input13"><label for="input13">kategori 13</label></li>
</ul>
</li>
<li><input type="checkbox" id="input2"><label for="input2">kategori 2</label></li>
<li>
<input type="checkbox" id="input3"><label for="input3">kategori 3</label>
<ul>
<li><input type="checkbox" id="input31"><label for="input31">kategori 31</label></li>
<li><input type="checkbox" id="input32"><label for="input32">kategori 32</label></li>
<li>
<input type="checkbox" id="input33"><label for="input33">kategori 33</label>
<ul>
<li><input type="checkbox" id="input331"><label for="input331">kategori 331</label></li>
<li><input type="checkbox" id="input332"><label for="input332">kategori 332</label></li>
<li><input type="checkbox" id="input333"><label for="input333">kategori 333</label></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<!--new-checkbox-->
<script type="text/javascript" src="https://cdn.anitur.com.tr/js/jquery-1.8.2.min.js" ></script>
</body>
</html>
css
.new-checkbox ul {
padding: 0;
margin: 0;
list-style: none;
margin-left: 30px;
font: normal 11px/16px"Segoe UI", Arial, Sans-serif;
}
.new-checkbox ul:first-child {
margin-left: 0;
}
.new-checkbox ul li {
margin: 3px 0;
}
.new-checkbox input[type="checkbox"] {
display: none;
}
.new-checkbox label {
cursor: pointer;
}
.new-checkbox input[type="checkbox"] + label:before {
border: 1px solid #ffffff;
content: "\00a0";
display: inline-block;
font: 16px/1em sans-serif;
height: 13px;
width: 13px;
margin: 2px .25em 0 0;
padding: 0;
vertical-align: top;
border: solid 1px #1375b3;
color: #1375b3;
opacity: .50;
}
.new-checkbox input[type="checkbox"]:checked + label:before {
background: #fff;
color: #1375b3;
content: "\2714";
text-align: center;
box-shadow: 0 0 2px rgba(0, 0, 0, .25) inset;
opacity: 1;
}
.new-checkbox input[type="checkbox"]:checked + label:after {
font-weight: bold;
}
jquery
$(document).ready(function() {
$('.new-checkbox input[type=checkbox]').on("click", function() {
if ($(this).is(':checked')) {
// check all children
$(this).parent().find('li input[type=checkbox]').prop('checked', true);
// check all parents
$(this).parent().prev().prop('checked', true);
} else {
// uncheck all children
$(this).parent().find('li input[type=checkbox]').prop('checked', false);
}
});
});
【问题讨论】:
-
我会考虑特别关注听众
.on('change') -
但是逻辑上怎么办?
-
我通过修复更新了答案。请检查。
标签: javascript jquery html css checkbox