我正在使用jsTree拖放功能,当我将节点拖动到新位置时,不仅要更新它的位置,还要更新它的兄弟姐妹在数据库中的位置。
这里是一个示例:
如果我将New node
拖到节点Gamme 1
中,那么它的兄弟姐妹是gamme 501
和gamme 500
获取有关已移动节点的数据并更新其在db中的位置不是问题:
.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})
那么有什么方法可以获取有关同胞位置的数据吗?
答案 0 :(得分:4)
您可以在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);
});