我无法在页面启动时选择树形元素。 有一个带有设置的JSFiddle: https ://jsfiddle.net/voltel/aszn3h46/

我的数据是JSON数组:


    const a_data = [
      {
        "id": "1296",
        "text": "Disposable and Single-Use Medical Supplies",
        "children": null
      },
      {
        "id": "1275",
        "text": "Implantables",
        "children": [
          {
            "id": "1276",
            "text": "Defibrillators, Implantable",
            "children": null
          },
          {
            "id": "1338",
            "text": "Analysers, Laboratory In-Vitro Diagnostic, Clinical Chemistry, Manual",
            "children": null
          },
        ]}  
    ];

    // Rest of JavaScript code 

    const $tree = $("#display");

    $tree.jstree({
      'plugins' : [ "wholerow", "checkbox" ],
      'core': {
        data : a_data
      },
      'checkbox': {
        three_state: false
      },
    });
    //

    // The problem: I can't select/check node with this id
    const c_icd_device_type = "1338";

    // show initial value
    if (c_icd_device_type) {
      console.log(`Request to select node with id ${c_icd_device_type}`);

      const o_selected_node = $tree.jstree('get_node', c_icd_device_type);
      console.log('Selected node: ', o_selected_node);

        // Uncomment ONE of the following: 
      if (o_selected_node) {
        $tree.jstree('select_node', o_selected_node, true);
      } else {
          $tree.jstree(true).select_node(c_icd_device_type);
      }//endif
    }//endif

请在启动时帮助选择一个节点,并消除控制台中的一些可疑错误(请参阅JSFiddle)。

现在,我从StackOverflow上jsTree的其他问题中了解到,如果将我的代码包装在事件处理程序中选择一个元素,它将起作用。 如果没有异步调用,我不太明白为什么这么复杂。 如果不可避免,为什么不使用Promise?

$tree.on('ready.jstree', function (e, data) {
  console.log(`Request to select node with id ${c_icd_device_type}`);

  const o_selected_node = data.instance.get_node(c_icd_device_type);
  //const o_selected_node = $tree.jstree('get_node', c_icd_device_type);

  console.log('Selected node: ', o_selected_node);

    // Uncomment ONE of the following: 
  if (o_selected_node) {
    $tree.jstree('select_node', o_selected_node, true);
  } else {
      $tree.jstree(true).select_node(c_icd_device_type);
  }//endif

});

===============>>#1 票数:0

我没有在Chrome的控制台中看到任何错误:

您的代码很好。 只是树还没有准备好。 如果将现有代码包装在ready.jstree事件中,它将起作用。

$tree.on('ready.jstree', function (e, data) {

    // Copy line 38 onward and place your existing code here

});

  ask by voltel translate from so

未解决问题?本站智能推荐:

1回复

如何以编程方式选择jsTree中的隐藏节点?

我有一个带有复选框的jsTree。 树中的每个项目都代表一个审阅项目,其状态可能为“新”,“已开始”或“完成”。 状态被添加到项目的@class中。 这是从中创建jsTree的无序列表的一部分 我现在要设置所有具有类“ .done”的节点的复选框。 该代码应通过工具栏中的按钮
1回复

在页面加载时选择jstree插件中的节点

我使用JsTree jQuery插件来在我的网页上创建组织结构。 问题是当页面加载时,HTML的DOM仅由树的根级别组成(由于某种原因,这是此插件的工作方式)。 因此,当我尝试使用“ select_node”功能选择某个节点时,由于它未加载到DOM中,因此无法识别它。 这是假定选择节
1回复

使用ajax加载以编程方式扩展jstree中的节点

我有一个用jstree制作的树,当你展开节点时,它会部分加载并通过json_data插件加载。 这是代码的关键: 然后,我想扩展一些节点并选择叶节点,具体取决于访问该站点的用户。 我在循环中执行如下操作: 打开Parent节点工作正常,当显示树但firstChild节点未打开
1回复

如何以编程方式删除jstree中的节点

我在jstree中显示了xml文件。 我可以使用以下代码选择节点: 我尝试添加用于删除树节点的jstree演示代码,但是,我认为我不知道该怎么做。 有人可以指导我如何去做吗?
2回复

如何以编程方式在jsTree中选择节点并打开所有父节点

在多级jsTree中,如何选择特定节点(可能是叶节点)并展开其所有父节点? 例: 从这个JSFiddle( http://jsfiddle.net/mmeah/fyDE6/ )我想以编程方式选择Grand Child并打开所有父节点。 对于某些上下文,我试图确保用户返回树中的正确节点
5回复

在JSTREE中同时选择父节点时,选择子节点

我在选择父节点时选择子节点时遇到困难,也想打开子文件夹并选择所有子节点(不确定我是否清楚)所以我知道如何通过以下方式获取所有子节点: 但是doest真的选择或打开子文件夹和节点
1回复

以编程方式在jstree中添加Node

我试图在按钮单击时以编程方式在jstree添加一个新节点,以及在contextmenu创建单击时,但是存在一些问题。 这是小提琴的链接。
2回复

使用jsTree以编程方式检查复选框节点

在使用jsTree构建的树中,我将<a>标记内的文本放在一个变量中。 我想检查那个节点。 我该怎么办? 我目前正在使用jQuery查找该节点,并更改其类。 但是,这不会通过使父节点在其类中不确定来修复父节点。 我尝试做$('.colors').jstree("check
2回复

以编程方式将子节点添加到jstree

我正在尝试编写一些动态地将节点添加到jstree的代码。 我已经按照http://www.jstree.com/documentation/crrm上的文档进行了操作,但无法得到一个简单的示例 - 正在添加节点child2,但它正被添加到节点的root中。 id'而不是'child1.id'指
1回复

如何打开页面中具有多个jstree的jstree特定节点

我在打开特定的 jstree节点时jstree问题。 我在页面中有多个 jstree ,并希望以编程方式控制节点的打开和关闭。 问题 :我想以编程方式打开节点香蕉吗? 这是我的代码: $(function () { $('.jstree-node').jstre