一级Id为负数、parentId为空,二级parentId等于一级id,三级parentId等于二级id
[{"name": "广东","Id": -1,"parentId": null},
{"name": "湖北","Id": -2,"parentId": null},
{"name": "广州","Id": 44,"parentId": -1},
{"name": "武汉","Id": 58,"parentId": -2},
{"name": "深圳","Id": 12,"parentId":-1 },
{"name": "白云","Id": 741,"parentId": 44}]
效果如图
写的有点难看,不过不受限于数组的排序(不一定要按照级数递减),也不受限于3级。
直接来个无限级分类的代码吧。
Javascript 版本
最终输出效果如下:
PS:分隔符可以自定义。求路过大牛帮忙优化:
arrayToTree()
^_^PHP 版本
以前写过,请直接戳这里,懒得复制了 _^_。
其实这也就是一个递归的关系,贴下我项目中的代码吧:
不邀自答,(考虑性能)私以为在数据根源入手是最有效直接的,来个数据库版的.
建表语句
比如使用oracle的层级查询
返回结果如下:
我们也可以这样写:
返回结果是:
非常在意性能的话这种因为数量级不大可以考虑不用3级联动,加工一下,然后输入如下的Option就行了。
首页
-首页
--首页
首页
就是根据ID找归类,直接JQ判断记载就好了
jQuery cxSelect 联动下拉菜单(https://github.com/ciaoca/cxS...
cxSelect 是基于 jQuery 的多级联动菜单插件,适用于省市、商品分类等联动菜单。
我是这么写的,一般一级菜单肯定是省,不会做任何改变,所以生成一个省级的数组缓存
再生成以省份ID为key的城市数组缓存
最后再以城市ID为key生成对应的地区数组缓存
然后就是所有记录以ID为key的数组缓存。
通过地区,得到对应的市级地区,和省份
通过省份,得到对应的城市,再得到对应的地区
通过城市得到对应的城市所属省份的城市子集。。。。。。
基本上四个数组就可以搞定了。