【发布时间】:2016-03-28 14:49:04
【问题描述】:
var selectedNode = $("#evts").jstree("get_selected");
大家好.. 我正在使用上面的代码从树中获取选定的节点。 如何获取 selectedNode 的所有子节点...我使用的是 jstree 3.3...
提前致谢!
【问题讨论】:
标签: javascript jquery jstree
var selectedNode = $("#evts").jstree("get_selected");
大家好.. 我正在使用上面的代码从树中获取选定的节点。 如何获取 selectedNode 的所有子节点...我使用的是 jstree 3.3...
提前致谢!
【问题讨论】:
标签: javascript jquery jstree
var currentNode = $("#evts").jstree("get_selected");
var childrens = $("#evts").jstree("get_children_dom",currentNode);
for(var i=0;i<childrens.length;i++)
{
alert(childrens[i].innerText);
}
上面的代码按预期工作......
【讨论】:
var selectedNode = $("#evts").jstree("get_selected");
var node_info=$('#evts').jstree("get_node",selectedNode[0]);
// this node_info contains **children_d** an array of all child nodes' id .
// **parents** an array of parent nodes
alert(node_info.children_d.join(','));
alert(node_info.parents.join(','));
【讨论】:
// Return childen even if not rendered
function getAllChildrenNodes(parentNode, children=[]) {
var node = $("#SimpleJSTree").jstree("get_node",parentNode);
children.push(node.id);
if (node.children) {
for (var i = 0; i < node.children.length; i++) {
getAllChildrenNodes(node.children[i], children);
}
}
return children;
}
var selectingInProccess=0;
// select all child nodes when parent selected
$('#SimpleJSTree').on('select_node.jstree', function (e, data) {
if(selectingInProccess==0){
selectingInProccess=1;
var closedNodes=[];
var children = getAllChildrenNodes(data.node.id);
children.forEach(function(node){
var nodeClosed = ($("#SimpleJSTree").jstree("is_closed",node));
$("#SimpleJSTree").jstree("select_node",node);
if(nodeClosed){
closedNodes.push(node);
}
});
closedNodes.forEach(function(node){
$("#SimpleJSTree").jstree("close_node",node,false);
});
selectingInProccess=0;
}
});
// deselect all child nodes when parent deselected
$('#SimpleJSTree').on('deselect_node.jstree', function (e, data) {
if(selectingInProccess==0){
selectingInProccess=1;
var children = getAllChildrenNodes(data.node.id);
children.forEach(function(node){
$("#SimpleJSTree").jstree("deselect_node",node);
});
selectingInProccess=0;
}
});
【讨论】:
例如:
enter $('button').on('click', function () {
var instance = $('#tree').jstree(true);
selected = instance.get_selected()[0];
console.log(instance.get_node(selected).children);
});
如果您想在事件处理程序中执行此操作,那就更简单了:
$('#tree').on('changed.jstree', function (e, data) {
console.log(data.instance.get_node(data.selected[0]).children);
});
【讨论】:
您可以使用get_children_dom (obj) 让孩子们尝试...
var selectedNode = $("#evts").jstree("get_selected");
var childrens = get_children_dom(selectedNode);
【讨论】: