zTree节点排序、jsTree节点排序

数字字母混合排序可以参考:https://www.cnblogs.com/sangzs/p/12893309.html

 

正文:

项目中遇到了这个问题,网上也没找到比较清晰的答案,索性提供一个方案吧。

原理:将整个树形插件的数据源进行排序,插件在构造UI时,自然也是按照顺序来排列的,目前这种思路适用于 zTree 和 jsTree 类库(当然jsTree本身也有自己的排序插件),其他类库大家自行尝试。

这里拿zTree类库举例:

 

未排序的效果图如下

下面这段是zTree初始化的代码,各科树形类库大同小异,总之都有一个数据源(例如此处的 treeData

$.fn.zTree.init($(parentContainer), setting, treeData);

 

那么我们只需要在初始化之前,自己构造方法把 treeData 进行排序即可

// 先排序
treeData = treeData.sort(function (a, b) {

    // 以下是两种自定义排序规则,此处我们选择按楼层高度属性排序(由高到低)

    // 按节点名称字符串,进行排序
    // let param1 = a.name;
    // let param2 = b.name;
    // return param1.localeCompare(param2, "zh");

    // 按楼层高度属性,进行排序
    let param1 = a.elevation;
    let param2 = b.elevation;
    return param2 - param1;
});

// 再初始化
$.fn.zTree.init($(parentContainer), setting, treeData);

 

经过排序后的效果图如下

posted @ 2019-03-13 17:14  最好的年纪  阅读(8308)  评论(1编辑  收藏  举报