我在我的应用程序中使用 jsTree 和 contextmenu 插件。
删除节点时,我有一个 ajax 请求对我的数据库执行操作。
仅当ajax返回操作= true参数时,我才想实际从视图中删除节点。
如何恢复已删除的jstree节点,代码如下:
function (data) {
var inst = $.jstree.reference(data.reference),
obj = inst.get_node(data.reference);
if(inst.is_selected(obj)) {
inst.delete_node(inst.get_selected());
}
else {
inst.delete_node(obj);
}
}
我仅在调用成功时从树中删除节点。首先删除节点,然后进行调用,如果失败则尝试重新添加节点,这是没有意义的。这是一个仅在 ajax 调用成功时删除节点的示例:
var node = $('#tree').jstree('get_selected');
$.ajax({
url: link,
type: 'GET',
data: { id: node.attr('id') },
async: false,
success: function (data, text) {
$('#tree').jstree('delete_node', node);
},
error: function (request, status, error) {
}
});
ps。这将获取当前选定的节点
另外两个选择。您可以在回调中检查条件:
"check_callback": function(operation, node, node_parent, node_position, more) {
if(operation=='delete_node'){
if(true){
return false;
}
}
return true;
}
或者如果您使用上下文菜单,您可以检查那里的情况:
"contextmenu":{
"items": function(node) {
return {
"Remove": {
"separator_before": false,
"separator_after": false,
"label": "Remove",
"action": function (obj) {
if(true){
tree.delete_node(node);
}
}
}
};
}
}