Javascript 如何获取jstree中所选节点的索引
我想使用jstree让用户选择节点,并使用拖放插件对树重新排序。 下面是一个演示当前行为的JSFIDLE:Javascript 如何获取jstree中所选节点的索引,javascript,jstree,jstree-dnd,Javascript,Jstree,Jstree Dnd,我想使用jstree让用户选择节点,并使用拖放插件对树重新排序。 下面是一个演示当前行为的JSFIDLE: $("#ProductInterests").jstree({ core: { themes: { icons: false },"check_callback" : true }, checkbox : { tie_selection : false }, plugins: ["themes", "checkbox","dnd"] }); $('button')
$("#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(','));
});
目前,所有选定的ID都会按其所选位置的顺序报告。是否可以按它们在树中出现的顺序获取它们?即使在用户拖放项目之后?我想这取决于你所说的“出现在树中”是什么意思。如果您的意思是可视化显示-您可以使用通用选择器并收集ID:
$("#ProductInterests").find('.jstree-checked').closest('.jstree-node')
.toArray().map(function (v) { return v.id; })
但是,这不会返回不可见的节点(这将是一个很大的问题,因为您使用的是three_状态)
如果这对您来说不合适,您可以使用递归函数遍历内部树模型,并按其真实顺序收集节点,无论是否可见。为此,您需要检查:$(“#ProductInterests”).jstree(true)。\u model.data['#'].children
以下是使用上述方法更新的小提琴(请随意优化功能,它不是很优雅):我想这取决于你所说的出现在树上是什么意思。如果您的意思是可视化显示-您可以使用通用选择器并收集ID:
$("#ProductInterests").find('.jstree-checked').closest('.jstree-node')
.toArray().map(function (v) { return v.id; })
但是,这不会返回不可见的节点(这将是一个很大的问题,因为您使用的是three_状态)
如果这对您来说不合适,您可以使用递归函数遍历内部树模型,并按其真实顺序收集节点,无论是否可见。为此,您需要检查:$(“#ProductInterests”).jstree(true)。\u model.data['#'].children
以下是使用上述方法更新的小提琴(请随意优化功能,它不是很优雅):