场景
设定用户组的时候需要勾选节点,多级节点的情况很多
解决
jq使用 1.6 左右的。
jqery.checktree.js
;
(function (win, doc, $) {
$.fn.extend({
checktree : function () {
this.click(function (evt) {
var evtEle = $(evt.target).closest("input:checkbox");
if (!evtEle[0]) {
return;
}
//check child all
evtEle.parent().next(".checks").find("input:checkbox").attr("checked", evtEle[0].checked);
//check parent
if (evtEle.is("input:checked")) {
evtEle.parents(".checks").each(function () {
!$(this).children("p").children("input:checkbox").filter(function () {
return !this.checked;
})[0] && $(this).prev().children("input:checkbox").attr("checked", "checked");
});
} else {
evtEle.parents(".checks").prev().children("input:checkbox").attr("checked", false);
}
});
}
});
})(window, document, jQuery);
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8" />
<title>checkTree</title>
<style type="text/css">
div,p{margin:0;padding:0; line-height:1.5;}
.checks{ padding-left:20px;}
</style>
</head>
<body>
<div class="J_CheckWrap">
<p><input type="checkbox" />一级</p>
<div class="checks">
<p><input type="checkbox" />二级</p>
<div class="checks">
<p><input type="checkbox" />三级</p>
<p><input type="checkbox" />三级</p>
<p><input type="checkbox" />三级</p>
<div class="checks">
<p><input type="checkbox" />四级</p>
<div class="checks">
<p><input type="checkbox" />五级</p>
<p><input type="checkbox" />五级</p>
<div class="checks">
<p><input type="checkbox" />六级</p>
<p><input type="checkbox" />六级</p>
</div>
</div>
<p><input type="checkbox" />四级</p>
</div>
</div>
<p><input type="checkbox" />二级</p>
<p><input type="checkbox" />二级</p>
<div class="checks">
<p><input type="checkbox" />三级</p>
<div class="checks">
<p><input type="checkbox" />四级</p>
<p><input type="checkbox" />四级</p>
</div>
<p><input type="checkbox" />三级</p>
<p><input type="checkbox" />三级</p>
</div>
<p><input type="checkbox" />二级</p>
<p><input type="checkbox" />二级</p>
<div class="checks">
<p><input type="checkbox" />三级</p>
<p><input type="checkbox" />三级</p>
<div class="checks">
<p><input type="checkbox" />四级</p>
<p><input type="checkbox" />四级</p>
</div>
<p><input type="checkbox" />三级</p>
</div>
<p><input type="checkbox" />二级</p>
</div>
</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript" src="jquery.checktree.js"></script>
<script>
$(".J_CheckWrap").checktree();
</script>
</body>
</html>