jsTree 获取节点的兄弟节点
jsTree get siblings of a node
我在 jsTree 中使用拖放,当我将一个节点拖到一个新位置时,我不仅要更新它的位置,还要更新它在数据库中的兄弟姐妹的位置。
这是一个例子:
如果我将 New node
拖入节点 Gamme 1
,现在它的兄弟节点是 gamme 501
和 gamme 500
获取有关移动节点的数据并更新它在数据库中的位置不是问题:
.on("move_node.jstree", function (e, data) {
console.log(data);
$.ajax({
type: "POST",
url: Routing.generate('saveGammeNewPosition'),
data: {
gammeId: data.node.id,
newParentId: data.node.parent,
position: data.position
}
});
})
但是我不知道如何获取有关已移动节点的新兄弟节点的信息。
当我做这样的事情时,不幸的是我没有得到关于位置的数据,因为 json jsTree 接受没有位置属性:
$('#tree').jstree(true).get_json(data.node.parent, {flat: true})
那么有什么方法可以获取有关兄弟姐妹位置的数据吗?
您可以在 move_node 事件中获取节点的新父节点,并使用它来获取其直接子节点。
function getSiblings(nodeID, parent) {
var tree = $('#tree').jstree(true),
parentNode = tree.get_node(parent),
aChildren = parentNode.children,
aSiblings = [];
aChildren.forEach(function(c){
if(c !== nodeID) aSiblings.push(c);
});
return aSiblings;
}
$('#tree').on("move_node.jstree", function (e, data) {
var aSiblings = getSiblings(data.node.id, data.parent);
console.log(aSiblings);
});
我在 jsTree 中使用拖放,当我将一个节点拖到一个新位置时,我不仅要更新它的位置,还要更新它在数据库中的兄弟姐妹的位置。
这是一个例子:
如果我将 New node
拖入节点 Gamme 1
,现在它的兄弟节点是 gamme 501
和 gamme 500
获取有关移动节点的数据并更新它在数据库中的位置不是问题:
.on("move_node.jstree", function (e, data) {
console.log(data);
$.ajax({
type: "POST",
url: Routing.generate('saveGammeNewPosition'),
data: {
gammeId: data.node.id,
newParentId: data.node.parent,
position: data.position
}
});
})
但是我不知道如何获取有关已移动节点的新兄弟节点的信息。
当我做这样的事情时,不幸的是我没有得到关于位置的数据,因为 json jsTree 接受没有位置属性:
$('#tree').jstree(true).get_json(data.node.parent, {flat: true})
那么有什么方法可以获取有关兄弟姐妹位置的数据吗?
您可以在 move_node 事件中获取节点的新父节点,并使用它来获取其直接子节点。
function getSiblings(nodeID, parent) {
var tree = $('#tree').jstree(true),
parentNode = tree.get_node(parent),
aChildren = parentNode.children,
aSiblings = [];
aChildren.forEach(function(c){
if(c !== nodeID) aSiblings.push(c);
});
return aSiblings;
}
$('#tree').on("move_node.jstree", function (e, data) {
var aSiblings = getSiblings(data.node.id, data.parent);
console.log(aSiblings);
});