zTree禁止点击部门

本文介绍如何在zTree中实现仅选择员工节点而不选择部门节点的功能。通过使用level属性而非isParent属性来判断点击节点是否为员工节点,并讨论了使用children属性判断的方法。

今天遇到一个问题,做报告需要选择一个团队负责人,用zTree做展示。但是只能选择员工,而不能选择部门,所以需要判断当前点击节点是否为员工节点,而非部门节点。

此情况的特殊性在于:当部门员工为空时,部门节点不是父节点,但是不应该被选择。所以不应该用是否为父节点来判断,而是用level(根节点 level = 0,依次递增)来判断。

解决:

function getSelected() {
    var nodes = zTree.getSelectedNodes();
    //不能点击部门,只能选择员工
    if (nodes[0].level == 0) {
        alert("请选择员工!");
        return;
    }
    //其它逻辑处理
}
  1. 能否用isParent来判断,答案是不能。因为当部门下没有员工时,此节点虽然不是父节点(没有员工子节点),但是不应该被选择。

  2. 能否用.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].childrenundefined
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值