原来有人在网上写了ztree的功能实现,思路是正确的,不过写的不对奥,尤其是对树进行拖拽后,zTree的tId是按顺序生成的,拖拽之后shift就不好用了,自己重新写了一个。使用全局变量preClickedNode!
直接贴代码:
onClick: function(event,treeId, treeNode,clickFlag){
var preClickedNode = window.preClickedNode;
window.preClickedNode=treeNode;
event = window.event||event;//兼容IE
if(!event.shiftKey||!preClickedNode)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);
}
}else {
for (var j = 1; j < (-count); j++) {
nodeNew = nodeNew.getPreNode();
// if(!nodeNew)break;//用于排除隐患
obj.selectNode(nodeNew, true);
}
}
window.preClickedNode=null;
}