2011-12-14 68 views
3

在我的JStree中,我希望用户只能选择树的叶子。例如:没有孩子的节点。我的想法是绑定select事件并手动检查选定节点是否有子节点,然后相应地选择/不选择节点。JSTree - 如何强制用户tp只选择树的叶子

有没有更简单的方法?或者这是唯一明显的解决方案?

+0

例如:有没有一个选项,我有监督? – 2011-12-14 10:11:29

回答

1

可以使用

  • Types plugin
  • .is_leaf(),用于检查如果所选节点是儿童安全 节点(叶)或没有。在'之前'返回错误事件将拒绝 选择节点。请参阅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

完美的作品,你做了我的一天,谢谢。就像往常一样,这是在我看过的文档中,大多数是......我想。 :) – 2011-12-15 08:49:55

+1

为了记录,我不得不将if表达式反转为** if(!x.is_leaf())**,因为我只希望叶子被选中。例如如果is_leaf不为true,则返回false。 – 2011-12-15 08:55:25

+0

我个人'需要'文档的例子,否则我有时不知道如何使用它:-) – Radek 2011-12-15 22:51:45

6

2014 - 版本3.0.1

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

此代码停用节点如果节点不是叶。

因此,只有树叶可以选择。