如题,我要实现ztree的动态添加或删除,情况是以树展开或关闭来判断新添加一个商品类别,还是一个已有节点下的类别,不知道怎么判断,谢谢了ztree  关闭 

解决方案 »

  1.   

    树节点有个open属性,引用API:
    记录 treeNode 节点的 展开 / 折叠 状态。
    1、初始化节点数据时,如果设定 treeNode.open = true,则会直接展开此节点
    2、叶子节点 treeNode.open = false
    3、为了解决部分朋友生成 json 数据出现的兼容问题, 支持 "false","true" 字符串格式的数据
    默认值:false
      

  2.   

    open属性不是对树设置打开和关闭吗?
       <script type="text/javascript">
        $(document).ready(function() { 
        var cate="";
       var setting = {
      view: {
    dblClickExpand: false,
    showLine: true,
    selectedMulti: false,
    showIcon:true
      },
    data: {
    simpleData: {
    enable:true,
    idKey: "id",
    pIdKey: "pId"
    }
    },
    callback: {
    beforeClick:zTreeBeforeClick,
    onClick:zTreeOnClick
    }
        };
        function zTreeBeforeClick(treeId, treeNode, clickFlag) {
         return (treeNode.id !== 1);
    };
    function zTreeOnClick(event, treeId, treeNode) {
         cate=treeNode.name;
        var action = "detail";
      $.ajax({
       async:true,
    dataType:"json",
        type:"post",  
    url:"goodsInfoAction.action",
    data:{cate:cate,action:action},
    success:function(data) {
    $("#myTable").jqGrid("clearGridData","clearfooter")
    for(var i=0;i<data.length;i++) {
    $("#myTable").jqGrid("addRowData",i+1,data[i]);
    }
           },
    error: function(){
    alert("---------------请求失败了");
    }
       }); 
        };
        
      var action="tree";
          $.ajax({
        async : true,
        dataType : "json",
        cache : false,                    //浏览器将不缓存此页面
        type : "post",
        url : "goodsInfoAction.action",
        data:{action:action},
        success : function(data) {
           var zNodes = data;
           $.fn.zTree.init($("#tree"), setting, zNodes);
        },
        error: function(){
        alert("--------------ajax出错了");
        }
        });
    $("#addC").click(function(){
    var treeObj = $.fn.zTree.getZTreeObj("tree");
    var boo=confirm("添加"+cate+"下的类别吗?");
    if(boo) {
    alert("添加"+cate+"下的类");
    }else {
    var obj=new Object();
       var result=window.showModalDialog("CategoryWindow.jsp",window,"status:no;dialogLeft:450px;dialogTop:250px;location:no;scroll:no;dialogWidth:350px;dialogHeight:350px",obj);
    }
    注:var cate="";是全局的,我添加一个商品类别,怎么判断要添加的是一个完全新的之前没有的类别呢,我的问题就在这里
      

  3.   

    最容易想到的办法,应该是先循环整个tree,找名称相同的。
      

  4.   

    我还是没表达清楚,树里头有A类别,B类别,我添加新类别可以是C类别,也可以是A类别下面的类别,也可以是B类别下面的类别,C类别是一级菜单,A或B下面的类别就是二级菜单了,现在是一级二级我不知道怎么区分的,我的想法是树闭合那添加的是一级菜单,如果展开,就是我要添加上次单击节点的下面的类别,不过这样也觉得不太好,想不出其他方法啊
      

  5.   

    我还是没表达清楚,树里头有A类别,B类别,我添加新类别可以是C类别,也可以是A类别下面的类别,也可以是B类别下面的类别,C类别是一级菜单,A或B下面的类别就是二级菜单了,现在是一级二级我不知道怎么区分的,我的想法是树闭合那添加的是一级菜单,如果展开,就是我要添加上次单击节点的下面的类别,不过这样也觉得不太好,想不出其他方法啊 
      

  6.   

    你可以给树节点添加个属性表示菜单的等级嘛;
    或者如果同级的菜单都在同一层的话,zTree树节点默认有个level属性;
      

  7.   

    失败了,回到了原来的问题,发现最根本的原因是ztree根节点没有点击事件,怎么给根节点添加点击事件呢
      

  8.   


    ztree树,根节点怎么添加单击事件,顶级节点啊,单击根节点,树展开,不是dblClickExpand:true啊