【问题标题】:JsTree get html attribute from a node that is not renderedJsTree从未呈现的节点获取html属性
【发布时间】:2016-04-15 10:10:27
【问题描述】:

我已经开始使用 JsTree,但在导航节点时遇到了问题。我使用了一个 HTML 列表来创建树视图,并且在创建树时所有信息都显示在页面上,没有额外的 AJAX 调用。

选择父节点时,我希望从所有子项获取信息(某些自定义HTML属性)。选择我使用的父级时:

data.instance.get_node("[id='" + value + "']");

关于“changed.jstree”事件,该事件将节点和我需要的所有信息(包括所有子项)作为完整的 jQuery 对象返回。

但是,当子级未在屏幕上绘制(父级未展开)时,使用同一行从子级获取信息,返回“false”,而不是 jQuery 对象。

在创建 JsTree 时,我还使用以下行来尝试在创建时加载所有节点:

jQuery(controlSelector).jstree("load_all");

我做错了吗?如果子节点未渲染且父节点未展开,有没有办法从子节点获取信息?

谢谢

【问题讨论】:

    标签: javascript jquery html jstree


    【解决方案1】:

    您可以使用选定节点的children_d 属性来获取其所有子节点的ID。检查下面的代码并演示 - Fiddle

    var selectedNodes = $('#container').jstree().get_selected(true);
    
    for(var i=0, len=selectedNodes.length; i<len; i++) {
        // access id's with selectedNodes[i].children_d ...
    }
    

    【讨论】:

    • 感谢您的回答,我可以得到孩子们,它是孩子们的 jQuery 对象,我在检索时遇到问题。在父元素未展开时,如果使用子元素的ID 来获取该子元素的jQuery 对象,则jQuery 将只返回布尔值“false”,而不是返回信息,因为子元素未在屏幕上绘制。它是我想要获取的未渲染节点的 jQuery 对象。
    • 隐藏节点的jquery对象怎么办?
    • 获取我添加到节点的自定义 HTML 属性,对于我使用的每个节点:node.li_attr["data-type"] 获取我需要解析的一些信息。但是子节点在隐藏时不会被渲染。
    • 你不需要一个 jquery 对象。只需通过带有var node = $('#container').jstree().get_node( selectedNodes[i].children_d[y] ) 的id 获取节点,其中y 是第二个循环中子节点的索引,然后从那里以node.li_attr 访问li_attr
    • 是的,我以前使用过 get_node,但如果它没有在屏幕上绘制,它似乎返回“False”。我所做的是循环遍历“tree._model.data”,并以我需要的为条件。感谢您的帮助。
    【解决方案2】:

    我发现所有未渲染的数据都存储在

    jQuery("#container").jstree(true)._model.data
    

    然后我遍历树上的所有节点并将节点与我设置的条件语句匹配,以检索我需要调用的内容:

    tree.get_node("#value");
    

    如果节点当前未在屏幕上绘制,则返回 false。

    【讨论】:

      猜你喜欢
      • 2012-05-05
      • 1970-01-01
      • 1970-01-01
      • 2012-05-04
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多