親のチェックボックスをオンにすると同時に子のチェックボックスをオンにすることができるようにしたい。これを実現するために一番下の親チェックボックスを取得できますが、一番下の親チェックボックスの上にある親チェックボックスはどれも機能しません。奇妙なことに、子をチェックすると、親が正しくチェックされるようになります。このコードは、データベースからデータを取得するツリービューで使用することを目的としています。
<script language="Javascript">
$.fn.linkNestedCheckboxes = function () {
var childCheckboxes = $(this).find('input[type=checkbox] ~ ul li input[type=checkbox]');
childCheckboxes.change(function(){
var parent = $(this).closest("ul").prevAll("input[type=checkbox]").first();
var anyChildrenChecked = $(this).closest("ul").find("li input[type=checkbox]").is(":checked");
$(parent).prop("checked", anyChildrenChecked);
});
// Parents
childCheckboxes.closest("ul").prevAll("input[type=checkbox]").first().change(function(){
$(this).nextAll("ul").first().find("li input[type=checkbox]")
.prop("checked", $(this).prop("checked"));
});
return $(this);
};
$(window).load(function () {
$("form").linkNestedCheckboxes();
});
</script>
<html>
<form>
<ul id="N0_1" class="tree" style="display: block;">
<li id="F0_10" class="folderOpen">
<input type="checkbox" value="31" name="folderID">
<a class="treeview" href="javascript:toggle('N0_1_0','F0_10')">Test AI File</a>
<ul id="N0_1_0" class="tree" style="display: block;">
<li id="D0_1_00" class="file" style="list-style-image: url(../manage/images/document.gif);">
<input type="checkbox" value="31|859" name="documentID">
AAA5083
</li>
<li id="D0_1_01" class="file" style="list-style-image: url(../manage/images/document.gif);">
<input type="checkbox" value="31|1024" name="documentID">
Test Indd File
</li>
</ul>
</li>
<li id="F0_10" class="folderOpen">
<input type="checkbox" value="31" name="folderID">
<a class="treeview" href="javascript:toggle('N0_1_0','F0_10')">Test AI File</a>
<ul id="N0_1_0" class="tree" style="display: block;">
<li id="D0_1_00" class="file" style="list-style-image: url(../manage/images/document.gif);">
<input type="checkbox" value="31|859" name="documentID">
AAA5083
</li>
<li id="D0_1_01" class="file" style="list-style-image: url(../manage/images/document.gif);">
<input type="checkbox" value="31|1024" name="documentID">
Test Indd File
</li>
</ul>
</li>
</ul>
</form>
</html>