web-dev-qa-db-ja.com

特定のノードをプログラムで選択する方法は?

Jstreeがあります。 IDが158の場所にあるオブジェクトにバインドされているノードを選択します。これは機能しますが、愚かなようです。これを行うより慣用的な方法は何ですか?

var $tree = $('.jstree', myContext),
    node = $tree.find('li').filter(function() { 
        return ( $(this).data().location || {}).id === 158;
    });
$tree.jstree('select_node', n)
36
George Mauer

答えがどれも役に立たなかったので、ここでチャイムを鳴らしたかっただけです。最後にDID=作業は非常に簡単でした:

$('#someTree').jstree('select_node', 'someNodeId');

someNodeIdをjQueryオブジェクトとして初期化していないことに注意してください。これは単なる文字列です。

ツリーをロードした直後にこれを行いましたwithout必要ではないと思われるので、それを "ready" bindイベントに入れます。

数時間のイライラから数人を救うことを願っています。 。 。

ロードされたツリーにフックするには:

.on('loaded.jstree', function() {
    // Do something here...
  });
36
Matt Cashatt

jsTreeグループ に基づいて試すことができます

jQuery("#getStartedTree").jstree("select_node", "#test2"); 

データが次のように見える場合

The JSON in the TextFile.txt - borrowed from your simple example
 [
     {
     "data" : "A node",
     "children" : [ "Child 1", "Child 2" ]
     },
     {
     "attr" : { "id" : "test1" },
         "data" : {
             "title" : "Long format demo",
             "attr" : { "id" : "test2", "href" : "#" }
         }
     }
 ] 

およびjsTreeのセットアップ

My tree container is <div id="getStartedTree">

My jsTree code
 $("#getStartedTree").jstree({
            "themes": {
                "theme": "default",
                "url": "../App_Css/Themes/Default/style.css",
                "dots": true,
                "icons": true
            },
            "json_data": {
                "ajax": {
                    "url": "../SiteMaps/TextFile.txt",
                    "dataType": "json",
                    "data": function(n) {
                        return { id: n.attr ? n.attr("id") : 0 };
                    }
                }
            },
            "plugins": ["themes", "json_data", "ui"]
        }); 

それはあなたが望んでいることですか?

20
Radek

ノードを選択する別の方法として、jstreeノードのクリックをシミュレートできました。次のコードは使用されたものです:

$(treeIdHandle + " li[id=" + nodeId + "] a").click();
3
Suketu Bhuta

私はそれをやった:

$('.jstree').jstree(true).select_node('element id');

このコード:

jQuery.each(produto.categorias, function(i, categoria) {
    $('#lista-categorias').jstree(true).select_node(categoria.dadoCategoria.id);
});
3

jstree 3.0.8を使用します。 「状態」を使用しないでください

 'plugins':['dnd'、 'sort'、 'types'、 'contextmenu'、 'wholerow'、 'ui'] 

サーバーはjsonを提供し、選択されたノードは

 "state":{"selected":true、 "opened":true} 
2
weijia

このソリューションは私のために働く

// after the tree is loaded
$(".jstree").on("loaded.jstree", function(){
    // don't use "#" for ID
    $('.jstree').jstree(true).select_node('ElementId');
});

さらに、PHPループ(動的)でも:

$(".jstree").on("loaded.jstree", function(){
    <?php foreach($tree as $node): ?>
        $('.jstree').jstree(true).select_node('<?=$node?>');
    <?php endforeach;?>
});

これがあなたのために働くことを願っています。

1
Khaled Ali