【问题标题】:Toggle entire jQuery jstree切换整个 jQuery jstree
【发布时间】:2011-08-02 06:36:11
【问题描述】:

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

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

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

但是toggle函数并没有展开节点的所有子节点。它也不会打开半开的树。我可以在单击按钮时调用 open_all 和 close_all,但是如何找到要调用的方法,例如确定树是否必须打开或关闭?

【问题讨论】:

    标签: jquery jstree


    【解决方案1】:

    为整棵树传递 -1:

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

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

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

    您还可以使用save_opened 记住打开了哪些节点,然后稍后使用reopen 函数重新打开它们。

    看看documentation

    【讨论】:

    • 与上述相同的问题。我使用哪个函数知道所有节点都在树中展开,并且在另一个按钮单击时,我需要将它们全部关闭。
    【解决方案2】:
    $("#treepanel").jstree("open_node", $('li[id="' + nodeId + '"]'), function() {
       alert("node is added")
    });
    

    试试这个

    【讨论】:

      【解决方案3】:
      function toggle(){
          var open=true;
          $(".jstree").jstree().on('loaded.jstree', function () {
               if(open){
                    $(".jstree").jstree('close_all');
               }else{
                    $(".jstree").jstree('close_all');
               }    
               open=!open; 
          });
      }
      

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 但是我如何判断树是半开还是半闭,甚至是全闭/全开?
        【解决方案5】:
        <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>
        

        【讨论】:

          【解决方案6】:

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

          <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;
             }
          }
          

          【讨论】:

            猜你喜欢
            • 2016-04-25
            • 2011-07-31
            • 2020-04-10
            • 2015-03-03
            • 2010-10-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-10-27
            相关资源
            最近更新 更多