2016-09-27 36 views
2

ユーザーがノードをクリックすると、select_nodeイベントがトリガーされるjsTreeがあります。しかし、私はまた、jsTreeのノードのidを持ついくつかのエントリを含むリストを持っています。このリストのエントリを選択する上で、私は唯一のツリーからではなく、select_nodeイベントを発射せずにノードを選択する必要があります。マニュアルに従って、select_node APIは3つのパラメータ
select_nodeイベントをトリガーせずにjsTreeノードを選択

https://www.jstree.com/api/#/?q=(&f=select_node(objを有する[prevent_open supress_event、])OBJ

は:アレイは複数のノード
supress_eventを選択するために使用することができる混合しましたは:trueに設定されている場合 ブールchanged.jstreeイベントがトリガされません
prevent_open:選択したノードのtrue親に設定されている場合 ブールはしかし、それはselect_nodeイベントを抑えるの話をしません

を開くことができません。助言がありますか?

+0

なぜこのイベントが発生しないようにしますか? –

+0

リストから選択が行われたときに強調表示する場合にのみ、この項目を選択する必要があるためです。 – KNP

+0

私は[2]私の作品 –

答えて

2

私はここで二つのオプションを参照してください。手動でコードからノードを選択しながら、一時的にあなたのselect_nodeイベントハンドラを無効に

  1. を。
  2. 代わりselect_nodeイベントのchangedイベントを使用してを抑圧フラグを使用します。
+1

あなたの質問をより明確にするために、あなたのコード、より良いjsFiddleを投稿すべきだと思います – vikyd

0

私はそれをやってのけるには良い方法があるかどう知っているが、ここで私はそれをやった方法ですしていない:

代わりselect_node機能を使用しての、私はノードのIDを取る関数を書きましたそれを開き、それを選択として設定し、親ノードを再帰的に開きます。

$('#TreeDiv').jstree(true).open_node(actualId); 
$('#TreeDiv').jstree(true).get_node(actualId).state.selected = true; 
var parent = $('#TreeDiv').jstree(true).get_parent(actualId); 
while (parent.length > 0) { 
    $('#TreeDiv').jstree(true).open_node(parent); 
    parent = $('#TreeDiv').jstree(true).get_parent(parent); 
} 
関連する問題