如何获取jstree中所选节点的索引

时间:2015-06-23 12:01:11

标签: javascript jstree jstree-dnd

我想使用jstree让用户选择节点并使用drag' drop插件重新排序树。 这是一个展示当前行为的小说:

$("#ProductInterests").jstree({
    core: { themes: { icons: false },"check_callback" : true },
    checkbox : { tie_selection : false },
    plugins: ["themes", "checkbox","dnd"]
});

$('button').click(function () {
    alert($("#ProductInterests").jstree(true).get_checked().join(','));
});

http://jsfiddle.net/dt2rk2d1/

目前,所有选定的ID都按其选择的顺序报告。是否有可能按照它们出现在树中的顺序获取它们?即使在用户拖放项目之后?

1 个答案:

答案 0 :(得分:0)

我想这取决于你在树中出现的意思。如果您的意思是直观显示 - 您可以使用通用选择器并收集ID:

$("#ProductInterests").find('.jstree-checked').closest('.jstree-node')
    .toArray().map(function (v) { return v.id; })

然而,这不会返回不可见的节点(由于您使用的是three_state,因此会很多)。

如果这不合适,您可以使用递归函数遍历内部树模型,并按照其真实顺序收集节点,无论是否可见。为此,您需要检查:$("#ProductInterests").jstree(true)._model.data['#'].children

这是使用上述方法的更新小提琴(随意优化功能,它不是很优雅):
http://jsfiddle.net/dt2rk2d1/1/