本帖最后由 jetaimejay 于 2013-07-03 11:44:32 编辑

解决方案 »

  1.   

    你的问题需要再确切些:
    你所要求返回数据,是在什么情况下触发的?
    如果是在点击checkbox后触发的,那这个问题就非常简单了。如果不是触发的,如果仅仅是在json内部里面处理。
    知道了底层的某个id,获取json里面高层的数据,这就无法实现了
    可以从高层依次向下获取,当时不能从底层依次向上获取
      

  2.   

    递归就可以了function getParentId(id){
      var arr = new Array();
      $.each(json, function(i,item){
        if(item.Id==id && item.ParentId!=0){
          arr.push(item.ParentId);
          arr = arr.concat(getParentId(item.ParentId));
        }
      });
      return arr;
    }
      

  3.   


        <script>
            var s = eval([{ "Id": 1, "Name": "机构1", "ParentId": 0 }, { "Id": 4, "Name": "机构11", "ParentId": 1 }, { "Id": 2, "Name": "机构2", "ParentId": 1 }, { "Id": 3, "Name": "机构3", "ParentId": 2 }, { "Id": 21, "Name": "机构111", "ParentId": 4}]);        p = GetParentId(21);
            q = GetParentId(p);
            alert(p + ":" + q);
            function GetParentId(id) {
                var n = "";
                for (var i = 0; i < s.length; i++) {
                  
                    if (s[i].Id == id) {
                    n = s[i].ParentId;
                    }
            } 
                return n;
            }
            
        </script>