JSTreeとAjaxに奇妙な問題があります。
を使用してHTML(UL、LI、Aタグ付き)を生成するAjax/PHPリクエストを介してツリーを生成します...
$.ajax({
url: 'ajaxTreeView.php?method=edit&partid='+partId,
cache: false,
success: function(tree)
{
$('#treeViewer').html(tree);
}});
を使用してコードでJStreeをアクティブ化します...
options =
{
"core": { animation: 120 },
"themes": { theme: 'corral', dots: true },
"types":
{
"types":
{
"parent": { "icon": { "image": "images/custom/Legend/node_select.png" } },
"child": { "icon": { "image": "images/custom/Legend/node_select_child.png" } },
"current": { "icon": { "image": "images/custom/Legend/node.png" } }
}
},
"plugins": [ "html_data", "types", "themes", "ui", "contextmenu", "cookies" ],
"ui": { "select_limit" : 1 },
"cookies": { "save_selected" : false }
};
$("#tree").jstree(options);
ノードを簡単に選択できないようです。initial_selectを試しましたが、これは機能しないようで、プログラムでノードを選択したいことが多いため、理想的でもありません。
使ってみました...
$('#tree').jstree("select_node", '#ref565', true);
これは、ハイパーリンクを介して関数を呼び出すと機能しますが、JStreeを初期化した後に呼び出すと機能しません。
アラートを追加するとわかります(これはすべてAjax Successルーチンで発生します)...
$('#treeViewer').html(tree);
$("#tree").jstree(options);
alert('test');
$('#tree').jstree("select_node", '#ref565', true);
...アラートが開始する前にツリーがレンダリングされていないこと。
setTimeOutを追加しました...
$('#treeViewer').html(tree);
$("#tree").jstree(options);
setTimeout(function() {selectNode(565);},1250);
$('#tree').jstree("select_node", '#ref565', true);
...これは機能します。
私は明らかに愚かです。間違った構文を使用していますか?ノードを選択するために遅延を設定する必要があるのはなぜですか?
助けてください。