最近更改老的项目中树的选择问题,选中与非选中
html部分
<ul id="tt" class="easyui-tree" data-options="animate:true,checkbox:true"></ul>
js部分:
function formatEdit(val, row) {
return "<a href=\"javascript:openMenuSetDialog(" + row.id +
")\"><img style='margin-top:4px' src='/static/images/edit.gif'/></a>";
}
function openMenuSetDialog(roleId) {
$("#dlg2").dialog("open").dialog("setTitle", "权限菜单设置");
var check_switch = false; //定义 boolean 变量 作为初始化onCheck的开关
$("#tt").tree({
parentField: 'pid',
lines: true,
rootProperty: 'modules',
checkbox: true, //是否带复选框
cascadeCheck: false, //定义是否层叠选中状态。
animate: true, //当节点展开或折叠是否显示动画效果。
checkcheck: true, //待查询是什么
url: '/admin/role/loadCheckMenuInfo?parentId=-1&roleId=' + roleId,
onBeforeLoad: function(node, param) {
check_switch = false; //初始化时 置为否 关闭onCheck事件开关
},
onLoadSuccess: function(node, data) {
check_switch = true; //数据 加载成功 置为 true 打开onCheck事件开关
$("#tt li:eq(0)").find("div").addClass("tree-node-selected"); //设置第一个节点高亮
var n = $("#tt").tree("getSelected");
if(n!=null){
$("#tt").tree("select",n.target); //相当于默认点击了一下第一个节点,执行onSelect方法
$("#tt").tree("expand",n.target); //默认展开第一个节点
}
},
onSelect:function(node){
$(this).tree(node.state === 'closed' ? 'expand' : 'collapse', node.target);
},
onCheck: function(node, checked) {
if (check_switch) { // 数据加载成功 且是用户点击方才触发事件
check_switch = false; //为了防止递归调用死循环 造成栈溢出 先关闭
//当选中节点的时候,把对应的父节点选中
if (checked) {
var parent = $("#tt").tree('getParent', node.target);
//var children = $("#tt").tree('getChildren');
if (parent) {
//alert(1);
$('#tt').tree('check', parent.target);
}
check_switch = true; //打开 父节点选中后
//节点选中,则check所有子节点
var children = $("#tt").tree('getChildren', node.target);
if (children) {
for (var i = 0; i < children.length; i++) {
if (children[i]) {
$('#tt').tree('check', children[i].target);
}
}
}
checkNode($("#tt").tree("getParent", node.target));
} else {
cancelSubNode(node); //判断是否可以取消父节点
check_switch = true;
//父节点取消选中,则uncheck所有子节点
var children = $("#tt").tree('getChildren', node.target);
if (children) {
for (var i = 0; i < children.length; i++) {
if (children[i]) {
$('#tt').tree('uncheck', children[i].target);
}
}
}
}
}
}
});
$("#roleId").val(roleId);
}