3

親も選択されているときに子ノードを選択するのに問題があります。また、サブフォルダーを開いてすべての子を選択したいので(明確にするかどうかはわかりません)、次の方法ですべての子ノードを取得する方法を知っています。

selected_nodes = $("#demo").jstree("get_selected", null, true); 
var tree = jQuery.jstree._reference('#demo'); 
var children = tree._get_children(selected_nodes); 


ただし、子フォルダとノードを実際に選択したり開いたりすることはありません

4

5 に答える 5

1

親ノードと子ノードを独立して選択できるようにするには、two_stateチェックボックスをオンにする必要があります。以下に、チェックボックスプラグインの「two_state」パラメーターを構成しました。

$("#docTree").jstree({
    "themes": {
        "theme": "classic",
        "url": "jstree/themes/classic/style.css"
    },
    "plugins": ["themes", "ui", "checkbox", "json_data"],
    "checkbox": { "two_state" : true }
})

ここでドキュメントを確認してください:http ://www.jstree.com/documentation/checkbox

于 2012-10-22T10:22:12.677 に答える
1

私がこれを正しく理解していれば、親 (フォルダー) の 1 つが選択されているときに、jsTree (ファイル) の最下位の子孫をすべて選択する必要があります。

残念ながら、以下よりも直接的なアプローチは見つかりませんでした。私はjsTree 3.1.1を使用しており、次の方法でこの問題を解決できました:

var $demo = $("#demo");
var nodes =  $demo.jstree("get_top_selected", true);

//Selects all of the children of each selected node including folders
if(nodes.length > 0){
    nodes.forEach(function(node, i){
        $demo.jstree("select_node", node.children_d, true, false);
    });
}

var fileNodes = $demo.jstree("get_bottom_selected", false);

//We now need to deselect everything and only select the file nodes
$demo.jstree("deselect_all", true);
$demo.jstree("select_node", fileNodes, true, false);

上記のコードにより、ユーザーは複数のフォルダーを「選択」し、それらのファイルを選択することができます。

関数の値trueを持つパラメーターは、 "get_top_selected"ID だけでなく完全なノードを返します。これにより、ノードの子にアクセスできます。

関数"select_node"は 3 つのパラメーターを取ります。1 つ目は、選択するノードです (この場合は、現在の親ノードの子孫)。2 番目のパラメーターを true に設定すると、changed.jstree選択した各ノードでイベントが発生しなくなります。3 番目のパラメーターは、子フォルダーが開かないようにするためのfalse設定として設定されます。true

この関数は、ノードが選択されていてそれ自体に子がない"get_bottom_selected"場合にのみ、ノードを返します。ここではノード ID のみに関心があるため、パラメーター false を渡す (または完全に省略する) ことができます。

のパラメーターをtrue関数"deselect_all"に再度渡すと、changed.jstreeイベントが発生しなくなります。

jsTree API ドキュメントを確認したい場合は、ここで見つけることができます。そのリストは、選択した関数とイベントのみが含まれるようにフィルター処理されます。API の完全なリストは、ここにあります。

これがお役に立てば幸いですが、コードについてさらに説明が必要な場合はお知らせください ^_^

于 2015-07-31T14:18:52.873 に答える
1

私はこのアイデアをあきらめました..今はajaxリクエストを実行して子をロードし、jsonオブジェクトを受け取ります.全体構造

于 2012-10-12T15:20:40.180 に答える
0
select all child nodes when parent selected ,
         $(data.rslt.obj).find("li").each( function( idx, listItem ) {
             var child = $(listItem); // child object
             $.jstree._reference("#associateRightHandTree").check_node(child);
         });

unselect all child nodes when parent unselected ,
        $(data.rslt.obj).find("li").each( function( idx, listItem ) {
            var child = $(listItem); // child object
            $.jstree._reference("#associateRightHandTree").uncheck_node(child);
        });
于 2013-01-17T07:04:28.213 に答える