【发布时间】:2012-05-25 14:24:23
【问题描述】:
我使用此代码检查树视图中的复选框。
HTML:
<div id="tree">
<ul>
<li>
<input type="checkbox"/> Root
<ul>
<li>
<input type="checkbox"/> Child 1
<ul>
<li><input type="checkbox"/> Subchild 1</li>
<li><input type="checkbox"/> Subchild 2</li>
<li><input type="checkbox"/> Subchild 3</li>
</ul>
</li>
<li>
<input type="checkbox"/> Child 2
<ul>
<li><input type="checkbox"/> Subchild 1</li>
<li><input type="checkbox"/> Subchild 2</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
JavaScript:
$(document).ready(function() {
$("#tree input:checkbox").change(function() {
var val = $(this).attr("checked");
$(this).parent().find("input:checkbox").each(function() {
if (val) {
$(this).attr("checked", "checked");
} else {
$(this).removeAttr("checked");
}
});
});
});
JSFiddle: http://jsfiddle.net/jRAcq/
这很好用。但是,如果未选中任何一个子节点,则取消选中根/子根。我该怎么做?
【问题讨论】:
-
真的应该不勾选根吗?我不这么认为。这意味着没有一个孩子是未经检查的。如果所有子项都未选中,则根也应取消选中。但不是以前。那是我的 2 美分。
-
澄清一下,如果我点击 Root,然后点击 Sub child 1,是否应该取消选中 Child 1 和 Root?
标签: jquery