【问题标题】:Filter JSON data depending on selected jsTree node根据选定的 jsTree 节点过滤 JSON 数据
【发布时间】:2016-02-25 20:17:38
【问题描述】:

我在fiddle 中有一个例子。我有一棵这样的树:

> Root > Parent[n] > Child[n].

Child 中,我添加了一个事件处理程序。在示例中它位于Child1 中,因此如果我单击Child1,它将呈现一个包含变量array 中的3 行的表格。

我想要的是,如果我点击 Child1,它将通过分支“Parent1”过滤表 (array),也就是说,它将呈现 2 行的表 named "父 1"。有什么办法吗?

【问题讨论】:

    标签: javascript jquery json jstree bootstrap-table


    【解决方案1】:

    我必须做两件事才能使您的代码正常工作:

    1. 添加 jsTree css 使其可扩展
    2. 您将 select_node 处理程序附加到 ID 为 $study 的东西上,而它应该是 jstree

      $('#jstree').on('select_node.jstree', function (evt, data) {...})
      

    检查this Fiddle的更新。

    如果您愿意的话,您可以稍微简化您的代码 - Fiddle

    更新

    如果要通过所选节点的父文本过滤数组,可以替换此行:$table.bootstrapTable('load', array);

    与:

    var parentNodeId = $('#jstree').jstree().get_node(data.selected[i]).parent;    
    var parentNodeText = $('#jstree').jstree().get_node(parentNodeId).text;
    
    var filteredArray = array.filter(function(item){
       if (item.name === parentNodeText) {
           return item;
       }  
    });
    
    $table.bootstrapTable('load', filteredArray);
    

    【讨论】:

    • 感谢您的注意,我修正了我的示例。这个小提琴只是举例,但主要问题仍然悬而未决
    • 那么是不是要通过Child1父节点标题过滤?
    • 完全正确,如果我点击 Child1,它应该过滤给我 Child1 Parent[n] caption
    • 它看起来不错,但由于某种原因它不能在小提琴中工作......我有你的想法,你定义的变量并为数组中的项目设置它。我有这个想法,但无法理解如何在脚本中定义它
    • 我发现了问题所在。 html 标记中的父节点的名称最后有额外的符号 - 换行符,所以它永远不等于 json 中的值。如果删除,一切正常。看看 - jsfiddle.net/ermakovnikolay/5zgto3L5
    猜你喜欢
    • 1970-01-01
    • 2017-08-12
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多