2

如何在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"; 
        });
    }
});
4

1 回答 1

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. 将修改后的缓存对象保存/分配回数据属性。

最后,要修改data属性,您需要使用$.data( key, value )函数重载。

于 2013-03-13T20:40:38.797 回答