zTree ctrl 多选功能

本文介绍了一种使用ZTree实现Shift键进行多节点勾选的方法,通过回调函数和事件监听实现用户友好的交互体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上多数写的是ztree shift 多选的功能实现, 但是要配合用户习惯来说的话,比较多是用于 ctrl ,因此这个也是根据shift 来写的


 callback : { //回调函数  
            onCheck: zTreeOnCheck
       }

//处理shift键多节点勾选
            function zTreeOnCheck(event, treeId, treeNode) {
                 var preClickedNode = window.preClickedNode;  
                 window.preClickedNode=treeNode;  
                event = window.event||event;//兼容IE  
                if(event.ctrlKey){
                     if((!event.ctrlKey && !event.srcEvent.ctrlKey)||!preClickedNode){//event.srcEvent.shiftKey解决firefox兼容性问题
                         console.log("event ctrlKey error");
                         return;// shift键  
                     }
                     if(preClickedNode.getParentNode()!=treeNode.getParentNode()){  //是否同级
                         preClickedNode=null;  
                         return;  
                     }  
                     var obj = jQuery.fn.zTree.getZTreeObj(treeId);  
//                   obj.selectNode(preClickedNode,true);   //选择
                     var firstNode =obj.getNodeIndex(preClickedNode);  
                     var lastNode =obj.getNodeIndex(treeNode);  
                     var count = lastNode - firstNode;  
                     var nodeNew = preClickedNode;  
                     if (count > 0) {  
                         for (var i = 1; i < count; i++){  
                             nodeNew = nodeNew.getNextNode();  
                             if(!nodeNew)break;//用于排除隐患  
//                           obj.selectNode(nodeNew, true); //选择
                             obj.checkNode(nodeNew, true, true);//勾选
                         }  
                     }else {  
                         for (var j = 1; j < (-count); j++) {  
                             nodeNew = nodeNew.getPreNode();  
                             if(!nodeNew)break;//用于排除隐患  
//                           obj.selectNode(nodeNew, true); //选择
                             obj.checkNode(nodeNew, true, true);//勾选
                         }  
                     }
                }

                }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值