2011-08-02 51 views
3

ボタンでツリー全体を開いたり閉じたりすることはできますか?jQuery jstree全体を切り替えます

私は、ツリーのすべてのノードとサブノードを開くために、私は次のようにopen_all関数を呼び出す必要があることを知っている:$("#tree").jstree('open_all');

とノードを切り替えるために:第1位はのIDです$("#tree").jstree("toggle_node","#1");最初の子供。

しかし、トグル機能はノードのすべてのサブノードを拡張しません。半開きの木も開けません。私はボタンクリックで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> 
関連する問題