2011-12-14 9 views
3

私のJStree内では、ユーザーはツリーのリーフのみを選択できます。例:子がないノード。私の考えは、選択イベントをバインドし、選択されたノードに子があるかどうかを手動でチェックし、それに応じてノードを選択/選択しないようにすることです。JSTree - ユーザーのtpを強制的にツリーのリーフを選択する方法

もっと簡単な方法はありますか?またはこの明らかな解決策は唯一のものですか?

+0

例:私は監督しているオプションはありますか? –

答えて

1

選択したノードはチャイルド ノード(葉)であるか否かをチェックするために

  • Types plugin
  • .is_leaf()を使用することができます。 'before'でfalseを返すと、イベントはノードを選択することを拒否する。 jsTree groups

を参照してください。

+0

完璧な仕事、あなたは私の一日を作った、ありがとう。そして、しばしば、それは私が読んだドキュメントの中にあった...ほとんどが...私は思った。 :) –

+1

記録のために、私は** if(!x.is_leaf())**にif式を逆にしなければなりませんでした。例えばis_leafがtrueでない場合はfalseを返します。 –

+0

私は個人的には「必要な」ドキュメントを用意していますが、そうでなければ私は時々使い方を理解できません:-) – Radek

6
$('#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; 
     } 
}) 

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_に関する追加の文脈を に提供すると、 と答えて、その質問は長期的には の値を大幅に改善します。あなたの答えを[編集]して、説明を加えてください。 –

関連する問題