web-dev-qa-db-ja.com

jsTree onSelectイベント

JsTreeで選択されているノードのテキストを取得しようとしています。ツリーにデータを入力してonSelectイベントをトリガーすることはできますが、クリックされたノードを見つけることができません。ネットでdata.rslt.obj.attr("data")を使用してテキストをフェッチする例を見てきましたが、これは未定義を返します。さらに、.jstree('get_selected')を使用して選択したノードを取得しようとすると、オブジェクトのどこにもノードテキストが見つかりません。ノードテキストを取得するにはどうすればよいですか?

これが私のonSelectコールバック関数です:

function onSelect(event, data)
{
    // Get the name of the equipment that was selected.
    var selected_node = $("#equipment_tree").jstree('get_selected');
    var equipment_name = data.rslt.obj.attr("data");
}
18

2018年に更新。

@ProfKのコメントのおかげで、APIは新しいバージョンのjstreeで変更されました。 jstree v3.1.0(またはそれ以前)では、APIが次のように変更されました。

$("#treeContainer").on(
        "select_node.jstree", function(evt, data){
            //selected node object: data.node;
        }
);

Jstreeの古いバージョン(2013より前)。

選択したノードオブジェクトとそのテキストは、次の方法で取得できます。

$("#treeContainer").bind(
        "select_node.jstree", function(evt, data){
            //selected node object: data.inst.get_json()[0];
            //selected node text: data.inst.get_json()[0].data
        }
);
47
shaochuancs

ノードからテキストを取得するためのjstreeの新しいバージョンはdata.node.textを使用する必要があります

$("#treeContainer").on("select_node.jstree",
     function(evt, data){
          alert(data.node.text);
     }
);
18
$("#equipment_tree").bind("select_node.jstree", function(evt, data){

             var i, j, r = [], ids=[];
                for(i = 0, j = data.selected.length; i < j; i++) {
                  r.Push(data.instance.get_node(data.selected[i]).text);
                }
                alert('Selected: ' + r.join(', '));
           }
);

あなたはこれを試さなければなりません。

1
Jack

現在のバージョンでは、get_selectedfull: trueとともに使用するのが最適です。これは、メソッドがIDだけでなく完全なオブジェクトを返すことを意味します。

だから例えば:

$("#treeNode").jstree('get_selected', true);

または:

$("#treeNode").jstree().get_selected(true);

配列の各要素には、すべてのプロパティがテキストまたはIDとして含まれます。

1
mikus