Переключить весь JQuery Jstree - PullRequest
       6

Переключить весь JQuery Jstree

3 голосов
/ 02 августа 2011

Можно ли открыть и закрыть все дерево с помощью кнопки?

Я знаю, что для того, чтобы открыть все узлы и подузлы дерева, я должен вызвать функцию open_all, например: $("#tree").jstree('open_all');

И для переключения узла: $("#tree").jstree("toggle_node","#1");, где # 1 - идентификатор первого дочернего элемента.

Но функция переключения не расширяет все подузлы узла.И при этом это не открывает полуоткрытое дерево.Я могу вызывать open_all и close_all по нажатию кнопки, но как мне найти, какой метод вызвать, как выяснить, нужно ли открывать или закрывать дерево?

Ответы [ 6 ]

7 голосов
/ 02 августа 2011

Пропуск -1 для всего дерева:

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

Чтобы закрыть все, вы можете использовать функцию close_all:

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

Вы также можете использовать save_opened, чтобы запомнить, какие узлы открыты, а затем открыть их позже с помощью функции reopen.

Посмотрите документацию .

2 голосов
/ 07 июля 2014
function toggle(){
    var open=true;
    $(".jstree").jstree().on('loaded.jstree', function () {
         if(open){
              $(".jstree").jstree('close_all');
         }else{
              $(".jstree").jstree('close_all');
         }    
         open=!open; 
    });
}
2 голосов
/ 02 августа 2011
$("#treepanel").jstree("open_node", $('li[id="' + nodeId + '"]'), function() {
   alert("node is added")
});

попробуйте это

1 голос
/ 07 декабря 2016
<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>
0 голосов
/ 22 августа 2016

спекуляция на @ بهنام محمدی ответ Это приведет к открытию и закрытию кнопки следующим образом:

<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;
   }
}
0 голосов
/ 02 августа 2011

Я использовал open_node и передал идентификатор корневого узла, чтобы раскрыть все дочерние элементы.У меня отлично работает.

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