jquery - jsTree:AJAX 调用后刷新内容然后打开所有
问题描述
我已经加载了一个带有 AJAX 调用的 jsTree,它返回 JSON 数据。当一个节点被移动并且我想要刷新树时,会进行另一个 AJAX 调用:
$("#my_tree").jstree({
"core": {
...
})
.on("move_node.jstree", function(node,nodes){
$.ajax({
url: "/path/to/ajax",
type: "POST",
data: {
action: "move",
...
},
success: function () {
$('#my_div').jstree(true).refresh(false, true);
}
});
})
那行得通,但我希望树在刷新时打开。这不起作用,树仍然倒塌。
success: function () {
$('#my_tree').jstree(true).refresh(false, true);
$('#my_tree').jstree("open_all");
[or even $("#my_tree").trigger("loaded.jstree"); ]
}
但是,当页面加载时,“open_all”可以正常工作:
.bind("loaded.jstree", function (event, data) {
$(this).jstree("open_all");
});
如何刷新和打开树?谢谢你的帮助。
[编辑] Tomalak 回答后的精确度:
移动完成后,数据库端会发生一些过程,新内容必须通过 AJAX 加载然后显示。这就是树被刷新的原因。
解决方案
添加它会在刷新后重新打开树:
.bind("refresh.jstree", function (event, data) {
$(this).jstree("open_all");
}