ztree吧 关注:1,835贴子:12,478
  • 6回复贴,共1

ztree如何编辑target,url

只看楼主收藏回复

树老大的ztree确实好用,使用它比较轻松实现了增删改,维护导航菜单比较方便,但是有个问题就是怎么编辑叶子的 target,url,现在可以编辑名字,使用的是异步树


1楼2013-04-04 20:15回复
    编辑多种属性,只能是自己去实现 div 图层了。 思路如下:
    1. 利用 beforeEditName 回调 可以捕获按下编辑按钮的事件,然后 return false 阻止 zTree 的默认事件。
    2. 在 1 中 return false 之前 显示自己的 编辑图层,可提供自定义的各种属性需求,因为在 beforeEditName 中你可以得到 节点的数据对象
    3. 编辑结束后, 直接修改 节点数据对象,然后 updateNode 即可。


    IP属地:北京2楼2013-04-07 11:17
    回复
      树老大,我在beforeEditName中 return false了,然后加自己的div发post请求确实把该节点的url,name,target信息在后台改了,问题是如何让被改动的节点显示新的name?在新增中我可以success : function(result) {var d = eval('(' + result + ')');//注意一定要 async : false,若异步//则不等数据返回,就会执行,下面的newId,newName就无法取到值newId = d.id;newName = d.name;}});var zTree = $.fn.zTree.getZTreeObj("treeDemo");zTree.addNodes(treeNode, {id : newId,pId : treeNode.id,name : newName});即刻更新当前节点的name值(后台返回的)


      3楼2013-04-13 13:51
      回复
        嗯,暂时避开这个问题,采用var zTree = $.fn.zTree.getZTreeObj("treeDemo");zTree.reAsyncChildNodes(null, "refresh");重新刷新来解决,不知道还有更好的方案没


        4楼2013-04-13 17:58
        回复
          你应该在你 发给后台的 post 的 ajax 的 success 回调中去执行 updateNode 方法就可以了


          IP属地:北京5楼2013-04-15 19:38
          回复
            我这样更新咋不行啊:zTree.updateNode( {id : d.node.id,pId : d.node.pid,name : d.node.name}); 其中d.node是后台传过来的该节点修改后的数据数据,当然id和pid没有变,我只改了url,target,name


            6楼2013-04-17 15:29
            回复
              updateNode 方法中传递的 node 数据对象必须是 zTree 内部使用的 节点对象。 这一点在 API 中都明确强调了的。


              IP属地:北京7楼2013-04-18 11:13
              回复