jquery - jsTree 排序功能慢得离谱

标签 jquery jstree

我正在为 Delicious 书签编写 Chrome 扩展。我的 background.js 文件在浏览器打开时获取书签,并创建 jsTree 构建正确的树所需的对象。

如果我禁用 jsTree 的排序插件,当我单击弹出窗口时,书签会立即出现。如果启用排序功能,单击和显示数据之间会有约 2 秒的延迟。

我尝试在后台脚本中对所有数据进行预排序,并将其传递到预排序的弹出窗口,但 jsTree 不支持此排序数据。

我只有 ~90 个标签和 ~400 个书签。我可以使用配置选项来加快速度吗?这是我的 jsTree 的样子。

$('#jstree').jstree({
    'close_all': -1,
    'core': {
        'animation': 0
    },
        'json_data': {
        'async': true,
        'data': data
    },

    'progressive_render': true,
    'themes': {
        'theme': 'classic',
        'dots': false,
        'icons': true
    },

    'sort': function (a, b) {
        return this.get_text(a) > this.get_text(b) ? 1 : -1; 
    },

    'types': {
        'valid_children': [ 'folder' ],
        'types': {
            'folder': {
                'valid_children': [ 'file' ],
                'max_depth': 1
            },
        }
    },

    'plugins': [
        'json_data',
        'themes',
        'sort',
        'types',
    ]
});

最佳答案

jsTree 使用原生数组 sort 方法,因此唯一可以改进的是对 get_text 的调用,但我怀疑是否可以更快。

如果您对数据进行了预排序 - 只需从您的 plugins 配置数组中删除排序插件即可。排序插件无法“知道”数据已经排序,只需删除该插件即可。

关于jquery - jsTree 排序功能慢得离谱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14964844/

相关文章:

javascript - 使用 JQuery 读取 Excel 数据

javascript - jstree 图标以及如何 'click to expand'

jquery - 使用 jQuery 将所选属性添加到选择菜单中的选项

javascript - 如何获取验证码值以便将其用于条件检查

javascript - Jquery变量变量

javascript - 如何判断节点类型

jquery - jsTree节点点击事件

ruby-on-rails-3 - Rspec/Capybara/Selenium 测试在查找不应该存在的 Assets 路径时失败

jquery - jsTree cookie错误

javascript - 单击 Formview 删除按钮时显示 jquery 对话框