Jquery Fancytree-在节点具有子节点时设置文件夹属性

Jquery Fancytree-在节点具有子节点时设置文件夹属性,jquery,fancytree,Jquery,Fancytree,我们正在使用Fancytree()作为在线帮助系统 我在示例中看到,当设置folder属性时,节点可以通过HTML对象类(class=“folder”)或JSON(“folder”:true)自动拥有文件夹图标 但是我想在节点有子节点时设置文件夹属性 我已经尝试过几种方法,但都没有成功。当node.haschilds为true时,我尝试将node.folder设置为true,在createNode事件、renderNode事件、loadChildren事件上尝试设置为true,并尝试在init事

我们正在使用Fancytree()作为在线帮助系统

我在示例中看到,当设置folder属性时,节点可以通过HTML对象类(class=“folder”)或JSON(“folder”:true)自动拥有文件夹图标

但是我想在节点有子节点时设置文件夹属性

我已经尝试过几种方法,但都没有成功。当node.haschilds为true时,我尝试将node.folder设置为true,在createNode事件、renderNode事件、loadChildren事件上尝试设置为true,并尝试在init事件上访问所有节点


有什么想法吗?

我终于自己找到了解决办法!我从FancyTree文档()中的示例中记得,我可以使用postProcess事件对加载的数据进行后处理和转换,这就是我所做的

因此,我遍历列表中的项目,搜索具有子元素的项目,以将folder属性设置为true。但这个函数必须是递归的,所以我可以检查子函数的子函数等等

让我们来看看代码:

<script type="text/javascript">
   function checkNodesForChildren(nodes) {
      $.each(nodes, function (index, node) {
         if (node.children) {
            node.folder = true;
            checkNodesForChildren(node.children);
         };
      });
   }

   $(function () {
      $("#tree").fancytree({
         source: {
            url: "/Ajuda.json", 
            contentType: "application/json; charset=iso-8859-1"
         },

         postProcess: function (event, data) {
            checkNodesForChildren(data.response);
         }
      });
   });
</script>

函数checkNodesForChildren(节点){
$.each(节点,函数(索引,节点){
if(节点子节点){
node.folder=true;
checkNodesForChildren(node.children);
};
});
}
$(函数(){
$(“#树”).fancytree({
资料来源:{
url:“/Ajuda.json”,
contentType:“应用程序/json;字符集=iso-8859-1”
},
后处理:函数(事件、数据){
checkNodesForChildren(data.response);
}
});
});

就我而言,问题解决了

欢迎来到SO,谢谢你的提问,如果你能提供一些演示或代码,人们可以通过这种方式指出具体的解决方案,那将是一件非常好的事情。请看这篇文章