如何在jstree排序函数中访问节点数据属性?

时间:2019-05-04 14:49:06

标签: javascript jquery jstree

简介

我正在使用jquery树插件库jstree显示树。

期望

由于我正在分发文件-它们具有扩展名-因此按名称排序不是很有帮助。可以想象按类型排序是最好的。

为此,我添加了item-sort-value的数据属性extension + fileName + uuid

错误

我想按此字段data-item-sort-value对树进行排序,但不使用树中的 standard 文件名。但是我无法在排序函数中获取其值。

我也尝试过:

  • a1.getAttribute('data-item-sort-value')...得到了TypeError: a1.getAttribute is not a function
  • a1.a_attr('data-item-sort-value')...得到了TypeError: a1.getAttribute is not a function
  • a1.data('item-sort-value')...得到了TypeError: a1.data is not a function
  • a1.node.data('item-sort-value')...得到了TypeError: a1.data is not a function

我的代码

'sort': function(a, b)
{
    let a1 = this.get_node(a);
    let b1 = this.get_node(b);

    if (a1.node.attr('item-sort-value') === b1.node.attr('data-item-sort-value'))
    {
        return (a1.node.attr('data-item-sort-value') > b1.node.attr('data-item-sort-value')) ? 1 : -1;
    }
    else
    {
        return (a1.icon > b1.icon) ? 1 : -1;
    }
}

控制台输出

enter image description here

1 个答案:

答案 0 :(得分:1)

这是使用数据属性值的有效排序功能。

'sort' : function(a, b)
{
    let a1 = this.get_node(a);
    let b1 = this.get_node(b);
    let isv_a1 = a1.a_attr['data-item-sort-value'];
    let isv_b1 = b1.a_attr['data-item-sort-value'];

    return (isv_a1 > isv_b1) ? 1 : -1;
}