jquery - 如何在使用 jsTree jQuery 插件创建后立即重命名节点?
问题描述
我使用 jsTree 插件来创建目录树。
右键单击一个节点,应该打开一个contextmenu
用户可以在其中创建新的子节点并为其分配自定义名称的位置。
所以除了重命名节点外一切正常。
我做了以下工作:
//create node (inside handler of contextmenu)
self.dirtree.jstree(true).create_node('#' + $(this).attr('id'));
//open node and edit it (inside event handler)
if (event.type == 'create_node') {
self.dirtree.jstree(true).open_node('#' + data.node.parent);
self.dirtree.jstree(true).edit($('#' + data.node.parent).find('> ul').find('> li').last(), "Neuer Ordner");
}
该事件被触发并且父节点也被打开,但是编辑只删除了节点名称并且没有按预期显示输入字段。如果我只调用 open_node,它看起来像:
当我也调用编辑时:
我不确定出了什么问题。由于编辑更改了节点,因此选择应该没问题。
如果我在 create_node 之后调用编辑(在上下文菜单的处理程序中),一切正常。
self.dirtree.jstree(true).create_node('#' + $(this).attr('id'));
self.dirtree.jstree(true).open_node('#' + $(this).attr('id'));
self.dirtree.jstree(true).edit($('#n-' + $(this).attr('id')).find('> ul').find('> li').last(), "Neuer Ordner");
甚至可以在事件处理程序中调用编辑吗?
解决方案
最后我找到了解决方案。问题是,当编辑调用发生时,open_node 还没有完成。所以我定义了一个异步函数,而不是直接调用这两个函数。
createAndRename: async function(parent){
var self = this;
await self.dirtree.jstree(true).open_node('#' + parent);
self.dirtree.jstree(true).edit($('#' + parent).find('> ul').find('> li').last(), "Neuer Ordner");
},
推荐阅读
- java - 创建具有多种数据类型的json?
- c# - 分配变量并在 IF 评估中检查它
- javascript - Ipad Safari 选择可防止用户单击顶部的元素
- sql - 如何创建一个列表,显示一周内所有服务过的唯一员工
- node.js - 当一个模块依赖于来自@nestjs/mongoose的Mongoose模型时的Nestjs依赖注入顺序,里面有详细的图表
- reactjs - 查看底部边框给出不同的颜色
- c# - 在 .Net Core 的另一个线程上调用函数
- abp - 关于使用 DomainService
- ruby-on-rails - 在 MAC(Big Sur)的终端中键入命令“rails server”时出现加载错误
- regex - 正则表达式前瞻和“字符串结束”不起作用