如何使用php / javascript制作预折叠的TreeView

我用php / javascript做了一个树视图。 在页面加载时,我无法弄清楚如何使其预折叠。

这是代码,附带想法。

0){ echo "
    "; while($row=mysql_fetch_assoc($query)){ echo "
  • ".$row['name']; getChildren($row['entry_id']); } echo "
"; } else echo "Empty base"; function getChildren($parent_id){ $query=mysql_query("SELECT tree_entry_lang.entry_id, tree_entry_lang.lang, tree_entry_lang.name, tree_entry.parent_entry_id FROM tree_entry,tree_entry_lang WHERE tree_entry.entry_id=tree_entry_lang.entry_id AND parent_entry_id=".$parent_id); $numrows=mysql_num_rows($query); if($numrows>0){ echo "
    "; while($row=mysql_fetch_assoc($query)){ echo "
  • ".$row['name']; getChildren($row['entry_id']); } echo "
"; echo ""; } }

这是jQuery部分:

 $('.collapsableTree').click(function () { $(this).parent().children().toggle(); $(this).toggle(); }); 

正如我所说,当页面加载时,我需要关闭所有节点。 我认为应该使用一些JavaScript函数,但我担心我不能创建一个。 有解决方案?

这不是vanilla HTML / jQuery支持的东西,你需要编写一个插件来处理它。 这不是一项微不足道的任务。 我建议看看jstree ,它的function非常全面并且有很好的文档记录 。

编辑

如果你要做的就是隐藏孩子,为什么不简单地将它们初始化为在CSS中display:none 。 然后单击时显示它们。 否则,根据上面的示例,确保在尝试通过将语句包装在$(function(){...})来尝试绑定事件处理程序之前,等待DOM准备就绪:

 $(function(){ $('.collapsableTree').click(function () { $(this).parent().children().toggle(); $(this).toggle(); }); }); 

使用CSS非常简单。 向元素添加一些类。

 

    然后在css中:

     .tree.branch{display:none}