我想使用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(','));
});
目前,所有选定的ID都按其选择的顺序报告。是否有可能按照它们出现在树中的顺序获取它们?即使在用户拖放项目之后?
答案 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/