jsTree:绑定到域对象

时间:2014-07-19 16:23:34

标签: javascript jquery json jstree

我想将树中的每个节点与域对象相关联。我传递HTML数据并在jQuery数据中手动存储域对象:

$('li node description').data('obj', my_domain_object);

但是,似乎jsTree在$('#jstree_div').jstree();期间清除了该数据。

所以稍后,$('li node description').data('obj')未定义。

这样做的最佳做法是什么? (我猜测HTML或JSON数据的原理是相同的)

1 个答案:

答案 0 :(得分:1)

jsTree保持数据完整,但出于优化原因移动它[1]。所以在回调中,必须通过data.node.data.some_key访问它。在我的例子中,神奇的咒语是:

$('#jsTree_div').on('select_node.jstree', function (e, data) {
        data.node.data.obj //... (instead of $('#node_id').data('obj'))
});

[1]“这是因为速度而完成的。每次重绘节点时使用jQuery的'.data()'附加数据都证明是相当慢的。” - Ivan Bozhanov,jsTree创建者https://groups.google.com/d/msg/jstree/w97E8uG_Bd0/enYklH-B1-cJ