easyui组件tree或者combotree默认双击是触发选择节点事件。有时我们可能想在双击时,不希望触发节点的选择,而是去展开或者收起节点,那怎么办呢?下面我们通过对easyui库的改写,来实现我们的需求。
先说原理:找到单击(bind click)事件的处理逻辑,然后把原来的处理单击的逻辑代码,全部放到定时器里执行(这一步主要是为了区分出单击、双击),一般区分单双击的定时器阈值时间为:300ms,如果判断到是双击事件(300ms内触发两次单击即视为是双击),则我们不执行原来的单击逻辑,改为我们自己的展开或收起节点(当然,前提需要判断是非末级节点)
好了,原理讲完,我们直接开搞,看代码:
1、找到树组件的bind click事件处理位置:
2、给单击事件处理逻辑添加定时器
3、向下一点,找到dbclick事件
4、判断是否是末级节点,对应不同的处理逻辑,非末级节点时执行toggle事件(展开/收起)
5、如果是末级节点时,我们根据自定义属性ignoreDbl来控制是否执行单击回调还是双击回调(这是为了选择性保留原始的双击回调方法)
ok,到这里我们改造tree、combotree非末级节点双击时展开/收起的功能就完成了!
有问题或者其他更好更合理的办法,欢迎赐教!