如何获取jstree中选中节点的索引
How to get the index of selected nodes in jstree
我想使用 jstree 让用户 select 节点并使用拖放插件重新排序树。
这是一个演示当前行为的 jsfiddle:
$("#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(','));
});
目前,所有 selected id 都是按照它们在 selected 的位置报告的。是否可以按照它们在树中出现的顺序获取它们?即使在用户拖放项目之后?
我想这取决于你所说的出现在树中的意思。如果您的意思是视觉上出现 - 您可以使用通用选择器并收集 ID:
$("#ProductInterests").find('.jstree-checked').closest('.jstree-node')
.toArray().map(function (v) { return v.id; })
然而,这不会 return 不可见的节点(因为您使用的是 three_state,所以会很多)。
如果这对您来说不合适,您可以使用递归函数遍历内部树模型并按真实顺序收集节点,无论是否可见。为此,您需要检查:$("#ProductInterests").jstree(true)._model.data['#'].children
这里是更新后的fiddle使用上面的方法(随意优化功能,不是很优雅):
http://jsfiddle.net/dt2rk2d1/1/
我想使用 jstree 让用户 select 节点并使用拖放插件重新排序树。 这是一个演示当前行为的 jsfiddle:
$("#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(','));
});
目前,所有 selected id 都是按照它们在 selected 的位置报告的。是否可以按照它们在树中出现的顺序获取它们?即使在用户拖放项目之后?
我想这取决于你所说的出现在树中的意思。如果您的意思是视觉上出现 - 您可以使用通用选择器并收集 ID:
$("#ProductInterests").find('.jstree-checked').closest('.jstree-node')
.toArray().map(function (v) { return v.id; })
然而,这不会 return 不可见的节点(因为您使用的是 three_state,所以会很多)。
如果这对您来说不合适,您可以使用递归函数遍历内部树模型并按真实顺序收集节点,无论是否可见。为此,您需要检查:$("#ProductInterests").jstree(true)._model.data['#'].children
这里是更新后的fiddle使用上面的方法(随意优化功能,不是很优雅):
http://jsfiddle.net/dt2rk2d1/1/