当前位置: 首页 > 知识库问答 >
问题:

打开id以特定单词开头的树节点

孟昊空
2023-03-14

我正在使用jsTree,到目前为止看起来还不错。

我有一个节点列表,它的id随着每一个新节点而增加,比如(g1,g2,g3……和一些其他节点,比如k1,k2,k3)

我可以通过使用

              "core": { 
                "animation": 0,
                "open_parents": true,
                "initially_open": ['g1']
                },

但是我想打开所有以'g'开头而不是'k'开头的节点,是不是可以使用$(id^=g)之类的东西?

更新:

这些节点是通过Web服务(如

 Dim oSB1 As StringBuilder = New StringBuilder
oSB1.Append(" <h5 >JSTree</h5> <div id='divtree' ><ul id='tree'> <li id='g1'><a       href='#' class='usr'>1st Node</a><ul> <li><a href='#'  rel='file'>1.1</a></li><li><a href='#'  class='usr'>1.2</a></li><li><a href='#'  class='file'>1.3</a></li></ul></li></ul><ul><li id='g2'><a href='#' class='usr'>2nd Node</a><ul> <li><a href='#'  rel='file'>2.1</a></li><li><a href='#' >2.2</a></li></ul></ul> <ul><li id='k2'><a href='#' class='usr'>3rd Node</a><ul> <li><a href='#'  rel='file'>3.1</a></li><li><a href='#' >3.2</a></li></ul></ul> <ul><li id='k2'><a href='#' class='usr'>4th Node</a><ul> <li><a href='#'  rel='file'>4.1</a></li><li><a href='#' >4.2</a></li></ul></ul></div>")
Return oSB1.ToString

从Web服务返回的数据被分配给jstree,因此我只需要打开id以'g'开头而不是'k'开头的节点,在上面的示例中只有2个节点,但想象一下如果有超过100个节点。

树的名称是这样的

  $("#G2").html(data.d);
$("#divtree").jstree(
                  {
                     "state": "open",
                      "animated": "slow",
                      "plugins": ["themes", "html_data", "ui", "crrm", "contextmenu"],

                        //working
                      "core": {
                          "animation": 0,
                          "open_parents": true,
                          "initially_open": ['g1']
                      },

                      "contextmenu": {
                          "items": function ($node) {
                              return {
                                  "Create": {
                                      "label": "Create a new Node",
                                      "action": function (obj) {
                                          $("#divtree").jstree("create_node", function () { alert("are you sure?") }, true);
                                          this.create(obj);
                                      }
                                  },
                                  "Rename": {
                                      "label": "Rename Node",
                                      "action": function (obj) {
                                          $("#divtree").jstree("rename_node", function () { alert("you are trying to rename") }, true);
                                          this.rename(obj);

                                      }
                                  },
                                  "Delete": {
                                      "label": "Delete Node",
                                      "action": function (obj) {
                                          $("#divtree").jstree("delete_node", function () { alert("Really!!?") }, true);
                                          this.remove(obj);


                                      }
                                  }
                              };
                          }
                      }

                  });

她只打开id为'G1'的节点,而我想打开id为'G'开头的所有节点,有没有办法让它运行?

共有2个答案

徐栋
2023-03-14

在生成json时,您只需使用“state”=>“open”作为希望在加载时打开的节点。因此,逻辑在生成json的代码中,而不是jsTree本身。

在doc中阅读更多关于json_data插件的内容

以JSON格式提供数据时需要遵循的基本结构是:

{
    "data" : "node_title",  // omit `attr` if not needed; the `attr` object gets passed to the jQuery `attr` function
    "attr" : { "id" : "node_identificator", "some-other-attribute" : "attribute_value" }, // `state` and `children` are only used for NON-leaf nodes
    "state" : "closed", // or "open", defaults to "closed"
    "children" : [ /* an array of child nodes objects */ ]
}
轩辕煌
2023-03-14

jsTree是非常非常好的,但是它的文档还有些地方需要改进。我也为此纠结了一段时间,最后想到了这个--有选择地扩展/限制jsTree节点

这可能不能直接回答你的具体问题,但我想它可能会有帮助。

 类似资料:
  • 我被分配了一个任务,从数组列表中返回以特定字母开头的单词,但是我选择了字母c;我被告知我可以用另一种方式做到这一点,除了专门返回每个以字母开头的元素和许多println之外,我不知道除了使用ArrayList startswith方法之外,还有什么其他方法可以做到这一点,有人愿意启发我吗? }

  • 问题内容: 我想在elasticsearch中编写一个查询,这样它只会给出字符串从特定单词开始的结果,例如,如果我要搜索“ Donald”,则我现在有一个字符串“ Donald Duck”,而另一个字符串是“ Alan Donald” “与以下查询 那么结果应该是“ Donald Duck”而不是“ Alan Donald”,因为在“ Donald Duck”中,它以“ Donald”开头。现在有

  • 问题内容: 我有这个jQuery代码: 但是我有几个像这样的id的div:editDialog-0,editDialog-1,....,editDialog-n。 我如何为所有这些div制作jQuery代码,就像上面的代码一样? 问题答案: 使用jQuery 从属性选择器 替代解决方案-1(强烈建议) 较干净的解决方案是为每个div和用途添加一个通用类 。 但是如果html标记不在您的手中并且由于

  • 我得到以下字符串: 我想从里面拿走食物和饮料。 我尝试了以下代码: 但它给人的感觉是,食物很刺激,喝了很多,离食物很近,三个和四个。

  • 问题内容: 我正在尝试对输入的SQL字符串进行一些基本验证。我想确保查询的第一个单词是否则将引发错误。这里有些例子: 和其他各种。也许这更多是一个正则表达式解决方案或string.replace。但是,查看是否已输入SQL SELECT语句的一种好方法是什么? 问题答案: 我将为作业使用适当的工具-SQL解析器,获取第一个语句对象,并检查其类型是否正确:

  • 这是我的浏览方法。我正在尝试通过“dictionaryEntry”对象的哈希图进行搜索,只查看条目的“word”部分。(b.word)。这个想法是您可以搜索整个字典并返回所有以给定方法的字符串开头的单词。例如,您可以返回所有以字符串“sto”开头的单词。我的想法是遍历哈希图,如果单词的子字符串,从位置零开始并以输入字符串的长度结束,它将被添加到数组列表中。然后将返回数组列表。