【问题标题】:jstree contextmenu - how to save changesjstree contextmenu - 如何保存更改
【发布时间】:2014-01-30 20:53:27
【问题描述】:

我正在尝试做一件非常简单的事情,但似乎遇到了障碍。它可能已经在文档中,但我没有找到它。

我正在尝试保存新创建的节点或重命名的节点。我从一个非常基本的设置开始:

$('#tree').jstree({
    'core' : {
        'check_callback' : true
    },
    'plugins' : ['contextmenu', 'dnd', 'state']
}).on('create_node.jstree', function(e, data) {
    console.log('saved');
});

我期待的是:
1) 右键单击​​现有节点之一。
2) 点击“创建”——此时console.log('saved'); 触发
3) 我输入一个新节点的名称
4)按“回车”保存数据——此时我想运行一个ajax请求将新节点保存在数据库中。

我如何从第 4 点捕捉事件?

【问题讨论】:

    标签: jquery contextmenu jstree


    【解决方案1】:

    插件作者建议监听 rename_node 事件。所以工作代码是:

    $('#tree').jstree({
        'core' : {
            'check_callback' : true
        },
        'plugins' : ['contextmenu', 'dnd', 'state']
    }).on('rename_node.jstree', function(e, data) {
        console.log('saved');
    });
    

    【讨论】:

    • 我在树中创建文件夹和文件时遇到了同样的问题,这些文件夹和文件将使用 ajax 保存在数据库中,然后在成功时刷新页面以在树中显示来自数据库的新数据。是否有教程显示如何完成对服务器的 ajax 调用?如果有人能回答我将不胜感激,因为我真的被卡住了。谢谢。
    【解决方案2】:

    有时如果这不起作用并且您想参加 create_node 事件,请使用,

    $('#tree').jstree({
    'core' : {
        'check_callback' : true
    },
    'plugins' : ['contextmenu', 'dnd', 'state']
    }).bind('create_node.jstree', function(e, data) {
    
    console.log('saved');
    
    });
    

    这可能只是解决问题。或者,如果它在某些弹出窗口中使用,则使用 live 事件而不是 jquery 事件,那肯定会适得其反。

    【讨论】:

      猜你喜欢
      • 2017-08-21
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-09
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多