2011-12-14 2 views
3

В моей JStree я хочу, чтобы пользователь мог выбирать только листья дерева. Например: Узлы, у которых нет детей. Моя идея - связать событие select и вручную проверить, имеет ли выбранный узел дочерние элементы, а затем выбрать/не выбрать узел соответственно.JSTree - Как заставить пользователя tp выбирать только листья дерева

Есть ли более простой способ? или это очевидное решение единственное?

+0

Например: есть ли опция, которую я контролировал? –

ответ

1

Вы можете использовать

  • Types plugin
  • .is_leaf() для проверки, если выбранный узел является ляющим узла (лист) или нет. Возврат false в 'before'-Event отклонит , выбрав узел. См. jsTree groups

В коде.

$('#treeID') 
.bind('before.jstree', function(event, data){ 
     switch(data.plugin){ 
       case 'ui': 
         if(data.inst.is_leaf(data.args[0])){ 
           return false; 
         } 
         break; 
       default: 
         break; 
     } 
}) 
+0

Работает отлично, вы сделали мой день, спасибо. И так часто, это было в документах, которые я прочитал ... в основном ... я думал. :) –

+1

Для записи мне пришлось инвертировать выражение if в ** if (! X.is_leaf()) **, поскольку я хочу, чтобы только листья были выбраны. например return false, если is_leaf неверен. –

+0

Мне лично «нужен» документ с примерами, иначе я не могу иногда понять, как его использовать :-) – Radek

6

2014 - версия 3.0.1

$('#jstree').on('activate_node.jstree', function(e, data) { 
    if(data.instance.is_leaf(data.node)) { 
    ... 
    } 
}); 
+0

Для меня это было «data.inst.is_leaf» – StefanG

0
$('#jstree').on('activate_node.jstree', function(e, data) { 
    if(!data.instance.is_leaf(data.node)) { 
    data.instance.deselect_node(data.node, true); 
    } 
} 

Этот код деактивации узел, если узел не является листом.

Таким образом, доступны только листья.

+0

Хотя этот код может ответить на вопрос, предоставив дополнительный контекст относительно _why_ и/или _how_ он отвечает , вопрос значительно улучшит его долгосрочное значение . Пожалуйста, отредактируйте свой ответ, чтобы добавить какое-то объяснение. –

Смежные вопросы