【问题标题】:Renaming a tree node dynamically outside of contextmenu in jstree在jstree的上下文菜单之外动态重命名树节点
【发布时间】:2012-09-08 04:29:33
【问题描述】:

我使用下面的代码在上下文菜单之外的 jstree 中成功创建了一个新的树节点。我的问题是如何在上下文菜单之外以类似的方式动态重命名树节点中的文本?是否可以调用 .jstree("rename" ....) 函数来完成此操作?非常感谢!

$("#RequirementsTree").jstree("create", null, "last", {"data" : "new_node_text",
                  "state" : "open",
                  "attr" :  { "id" : "new_node_id", "name" : "requirement" }, 
 });

我尝试了以下方法:

        .bind("select_node.jstree", function(event, data) {
            ReqNode = data.rslt;

 $("#RequirementsTree").rename_node(ReqNode, "test");

然而,这并没有奏效。是不是我做错了什么?

【问题讨论】:

  • 最好从 jstree 网站获取其文档列表,如果有能力,它会立即概述。jstree.com/documentation
  • 我看了看那里并尝试了 $("#RequirementsTree").rename_node(ReqNode, "test");然而,这并没有奏效。

标签: jquery rename jstree treenode


【解决方案1】:

以下句子有效:
$("#demo1").jstree('set_text', node , text);

【讨论】:

    【解决方案2】:

    有决定:https://groups.google.com/forum/#!topic/jstree/cq9wzW9Ia3s

    简而言之,默认情况下 jsTree 会阻止其树中的任何更改,因此您必须启用它:

    $('#YourJSTree').jstree({ core: { check_callback: 'true' }, [...]
    

    【讨论】:

      【解决方案3】:

      我使用的是 jsTree 1.0-rc3 版本。下面的语法对我有用:

       $('#companyFields_tree').jstree('rename_node', '#0', 'testNewName' );
      

      【讨论】:

        【解决方案4】:

        Mortalus 的以下建议对我不起作用。虽然我更喜欢留在 jstree 特定代码的范围内,但我想出了一种 jquery hack 来绕过内置的“rename_node”和“set_text”方法,因为它们不适合我。我想我会在这里发布我的答案,以防其他人有同样的问题:

           $(Node).find("a").text("the_new_text_for_the_node_you_want_to_rename");
        

        这对我有用。它基本上是抓取 li 下方的锚元素并为其设置文本。

        【讨论】:

        • 它只是暂时显示..当您再次实际进行编辑时,它会将文本设置为默认文本..看看
        【解决方案5】:

        这应该适合你:

        $("#demo1").jstree('set_text', [node , text] );
        $("#demo1").jstree('rename_node', [node , text] );
        

        JSTree Core Documentation...

        how-can-i-rename-a-jstree-node

        【讨论】:

        • 我不知道交易是什么。我尝试了您建议的这两个选项,但都没有奏效。我知道我正在获取 li 元素,因为我可以更改其上的类,但是“rename_node”和“set_text”由于某种原因无法正常工作。我应该为该特定节点使用除 li 元素之外的其他元素吗?
        • @TheDude "node" 需要在
        • 级别 ID。尝试记录 $(node).attr("id") 以查看显示的值。请记住使用 ID 字符串传递 #。 $("#demo1").jstree('set_text', ["#myID" , "SomeText"] );
      • 我必须将语法更改为$("#demo1").jstree('rename_node', [node ], text ); 然后它才起作用。
      • 猜你喜欢
        相关资源
        最近更新 更多
        热门标签