2011-08-02 49 views
3

是否可以通過按鈕打開和關閉整個樹?切換整個jQuery jstree

我知道,爲了打開所有的節點和樹的子節點,我得叫像open_all功能:$("#tree").jstree('open_all');

而且爲了切換節點:$("#tree").jstree("toggle_node","#1");其中,#1的ID第一個孩子。

但是,toggle功能不會展開節點的所有子節點。它也沒有打開一個半開的樹。我可以在按鈕單擊時調用open_all和close_all,但是如何找到調用哪種方法,如圖中所示,是否需要打開或關閉樹?

回答

0

我已經使用open_node並傳遞了根節點的標識符來展開所有的子項。這對我來說可以。

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

但是我怎麼弄清楚樹是半開還是半關,甚至完全關閉/開放? – imgr8

6

傳遞-1整個樹:

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

要關閉所有你可以使用close_all功能:

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

您還可以使用save_opened記住哪個節點被打開然後用reopen函數重新打開它們。

看看​​。

+0

與上述相同的問題。我使用哪個函數來知道所有節點在樹中展開,並且在另一個按鈕上單擊時,我需要關閉它們。 – imgr8

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

試試這個

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