如何在select_node事件上为jstree添加元数据

时间:2013-03-08 11:05:16

标签: javascript jstree

如何在select_node事件上为jstree添加元数据。这就是我试图添加的方式:

$.ajax({            
    type : 'GET',
    url : '/assessment/getassess',
    dataType : 'json',          
    success : function(jsonData) {
        $("#treeViewDiv").jstree({
            "themes" : {
                "theme" : "classic",
                "dots" : true,
                "icons" : true,
                "url" : "/css/themes/classic/style.css"
            },
            "json_data" : jsonData,
            "plugins" : ["themes", "json_data", "ui", "contextmenu"],
            "contextmenu" : {
                items : createMenu
            }
        }).bind("select_node.jstree", function(e, data) {
            $(data.rslt.obj).data("jstree").description = "Size: 45units"; 
        });
    }
});

1 个答案:

答案 0 :(得分:0)

我认为您错误地使用了$.data()功能。

$.data()功能的结果指定值,并自动保存。

你想要做的是改变这一行,

$(data.rslt.obj).data("jstree").description = "Size: 45units";

到此,

// On the next line, we use "|| {}" because if the data attribute is unassigned, we want to start with a default empty object.
var jstreeData = $(data.rslt.obj).data("jstree") || {};

// assign the property(ies)/value(s) you want.
jstreeData.description = "Size: 45units";

// finally, reassign your modified object back to the data attribute.
$(data.rslt.obj).data("jstree", jstreeData);

如果数据属性由对象组成,则您需要:

  1. 缓存对象;
  2. 修改缓存对象;
  3. 将修改后的缓存对象保存/分配回数据属性。
  4. 最后,要修改data属性,您希望使用$.data( key, value )函数重载。