zTree 异步加载 添加子节点重复问题

//添加结点, 产品和版本
function addNode(event) {
     rMenu.css({ "visibility": "hidden" });
     var treeNode = zTree.getSelectedNodes()[0];
     var pid;
     var nodeName;
     var treelevel;
     if (!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0) {
         //添加产品结点
pid = 0;
         treeNode = null;
         treelevel = 1;
     } else if (treeNode) {
         //添加版本结点
pid = treeNode.id;
     treelevel = 2;
     }
     $.post(
         "AddNode.action",
         { type: treelevel, id: pid },
         function(nodeIdAndName) {
             var params = /([^\|]+)\|([^\|]+)/.exec(nodeIdAndName);
             if (!((!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0) || treeNode.open)) {
                 zTree.expandNode(treeNode, true);
             }
             treeNode = zTree.addNodes(treeNode, { id: params[1], pid: pid, isParent: "true", name: params[2], editable: "true", treelevel: treelevel });
         });
}

原本直接添加子节点的时候,如果父节点没有展开,会添加两个一样的子节点(第一次的时候);后来我对父节点是否展开进行了判断,但是却变成了如果父节点展开,会添加两个一样的子节点(第一次的时候),这个问题要怎么解决呢?//添加结点, 产品和版本
function addNode(event) {
     rMenu.css({ "visibility": "hidden" });
     var treeNode = zTree.getSelectedNodes()[0];
     var pid;
     var nodeName;
     var treelevel;
     if (!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0) {
         //添加产品结点
pid = 0;
         treeNode = null;
         treelevel = 1;
     } else if (treeNode) {
         //添加版本结点
pid = treeNode.id;
     treelevel = 2;
     }
     $.post(
         "AddNode.action",
         { type: treelevel, id: pid },
         function(nodeIdAndName) {
             var params = /([^\|]+)\|([^\|]+)/.exec(nodeIdAndName);
             if (!((!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0) || treeNode.open)) {
                 zTree.expandNode(treeNode, true);
             }
             treeNode = zTree.addNodes(treeNode, { id: params[1], pid: pid, isParent: "true", name: params[2], editable: "true", treelevel: treelevel });
         });
}

原本直接添加子节点的时候,如果父节点没有展开,会添加两个一样的子节点(第一次的时候);后来我对父节点是否展开进行了判断,但是却变成了如果父节点展开,会添加两个一样的子节点(第一次的时候),这个问题要怎么解决呢?

 

 

 

 

 


if (!((!treeNode && event.target.tagName.toLowerCase() !=  "button" && $(event.target).parents("a").length == 0) ||  treeNode.open)) {
                 zTree.expandNode(treeNode, true);
             }
             treeNode = zTree.addNodes(treeNode, { id: params[1], pid:  pid, isParent: "true", name: params[2], editable: "true", treelevel:  treelevel });
改成
if(!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0)
               {
                 treeNode = zTree.addNodes(treeNode, { id: params[1], pid: pid, isParent: "true", name: params[2], editable: "true", treelevel: treelevel });
               }
               else if(treeNode.open)
               {
                 if(treeNode.isParent)
                 {
                     zTree.reAsyncChildNodes(treeNode, "refresh");
                 }
                 else
                 {
                     treeNode.isParent=true;
                     zTree.reAsyncChildNodes(treeNode, "refresh");
                 }
               }
               else
               {
                   zTree.expandNode(treeNode, true);
                   treeNode = zTree.addNodes(treeNode, { id: params[1], pid: pid, isParent: "true", name: params[2], editable: "true", treelevel: treelevel });
               }

问题就可以解决了,但是有没有优化呢?感觉改后的代码分类太多了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值