切换整个jQuery jstree

时间:2011-08-02 06:36:11

标签: jquery jstree

是否可以通过按钮打开和关闭整个树?

我知道为了打开树的所有节点和子节点,我必须调用open_all函数,如:$("#tree").jstree('open_all');

为了切换节点:$("#tree").jstree("toggle_node","#1");其中#1是第一个孩子的id。

但切换功能不会扩展节点的所有子节点。它也没有打开一棵半开的树。我可以在按钮单击时调用open_all和close_all,但是如何找到要调用的方法,如图中是否必须打开或关闭树?

6 个答案:

答案 0 :(得分:7)

为整棵树传递-1:

$("#tree").jstree("open_all", -1);

要关闭所有,您可以使用close_all函数:

$("#tree").jstree("close_all", -1);

您还可以使用save_opened来记住打开的节点,然后使用reopen功能重新打开它们。

查看documentation

答案 1 :(得分:2)

$("#treepanel").jstree("open_node", $('li[id="' + nodeId + '"]'), function() {
   alert("node is added")
});

试试这个

答案 2 :(得分:2)

function toggle(){
    var open=true;
    $(".jstree").jstree().on('loaded.jstree', function () {
         if(open){
              $(".jstree").jstree('close_all');
         }else{
              $(".jstree").jstree('close_all');
         }    
         open=!open; 
    });
}

答案 3 :(得分:1)

<img onclick="jstreeToggleState()" src='toggle-image.jpg'></img>

  <script>
   var isTreeOpen = false;

   function jstreeToggleState() {

        if(isTreeOpen){
              $(".jstree").jstree('close_all');
         }else{
              $(".jstree").jstree('open_all');
         }    
         isTreeOpen =! isTreeOpen; 
  }
</script>

答案 4 :(得分:0)

我使用了open_node并传递了根节点的标识符来扩展所有子节点。它对我来说很好。

$('#tree').jstree('open_node', '#root');

答案 5 :(得分:0)

捎带@بهناممحمدی回答 这将在按钮上打开和关闭,如下所示:

<button class="product-expand" onclick="toggle()">Toggle Open/Close</button>

var open = false;
function toggle(){
   if(open){
    $("#prodtree").jstree('close_all');
    open = false;
   }
   else{
    $("#prodtree").jstree('open_all');
    open = true;
   }
}