2013-03-08 35 views
2

如何在select_node事件中爲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"; 
     }); 
    } 
}); 
+0

你做了一些研究嗎? – Jesse 2013-03-08 11:25:24

+0

是的,我做過。當我使用alert(data.rslt.obj.data(「id」));在節點的select_node上,它顯示了適當的值,但是當我嘗試給它分配一些內容時。它不起作用 – userguested 2013-03-12 09:37:31

+0

你能展示更多的代碼嗎?從上面的代碼行很難幫助/解決您的問題。我認爲你應該更充實你的問題 - 看看[如何問](http://stackoverflow.com/faq#howtoask)。 – Jesse 2013-03-12 10:03:27

回答

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)函數過載。

+0

謝謝你..我會試試這個 – userguested 2013-03-14 07:14:24

+0

@ user30081989這個答案對你有用嗎? – Jesse 2013-04-26 12:27:37

+0

我很抱歉,有很長的差距。但是這段代碼對我來說並不起作用。 – userguested 2013-05-24 11:24:32

相關問題