今天遇到一个问题,做报告需要选择一个团队负责人,用zTree做展示。但是只能选择员工,而不能选择部门,所以需要判断当前点击节点是否为员工节点,而非部门节点。
此情况的特殊性在于:当部门员工为空时,部门节点不是父节点,但是不应该被选择。所以不应该用是否为父节点来判断,而是用level(根节点 level = 0,依次递增)
来判断。
解决:
function getSelected() {
var nodes = zTree.getSelectedNodes();
//不能点击部门,只能选择员工
if (nodes[0].level == 0) {
alert("请选择员工!");
return;
}
//其它逻辑处理
}
能否用
isParent
来判断,答案是不能。因为当部门下没有员工时,此节点虽然不是父节点(没有员工子节点),但是不应该被选择。能否用
.children.length
来判断,能,比较麻烦。因为.children
属性只有包含子节点的时候才有,否则是undefined
//获得点击节点
function getSelected() {
var nodes = zTree.getSelectedNodes();
console.log(nodes)
}
当所选节点有子节点时:nodes[i]
有一个属性children
,是一个子节点数组,使用nodes[0].children.length
可以获取点击节点的子节点个数。
当所选节点无子节点时:nodes[I]
没有children
属性,这是直接用nodes[0].children.length
必然报错,因为nodes[0].children
是undefined
。