2013-08-06 63 views
0

jstree中,我可以右鍵單擊一個節點並從上下文菜單中選擇一個項目。 在下面的代碼中,我試圖使用obj對象來獲取樹項目。我可以使用$(obj),但這只是一個HTML列表項目。我如何獲得與此相關的元數據(foo)?如何從contextmenu獲取JsTree物品的元數據?

$(element).jstree(
    "data" : { "data" : {"title" : "An item"}, "metadata":{"foo" :"bar"}}, 
    "plugins" : ["themes", "ui", "contextmenu"], 
    "contextmenu" : { 

     "items" : function($node) { 
      return { 
      "Menu1" : function(obj){ 
       //my menu action 
       }   
     }; 
    }; 
    } 

); 

回答

0

以下是元數據如何被訪問。

obj.data().foo 
0

當試圖獲取所選jsTree節點的ID時,我遇到了同樣的問題。

enter image description here

這是可以做到,你只需要創建自己的函數來填充文本菜單,從您的JSON數據提取相關的值:

jsTree Context Menu selected item?

0

在函數參數contextmenu.items您可以訪問當前項目數據。這個動態調用的函數,每次觸發節點上新的右鍵單擊事件時,請參閱示例:

$('#post-tree').jstree({ 
    core: { 
    data: treeData 
    }, 
    plugins: ['contextmenu'], 
    contextmenu: { 
    items: function (item) { 

     return { 
     addPost: { 
      label: 'Add new Post', 
      action: function() { 
      console.log(item.original); // metadata object 
      } 
     }, 
     addSubcategory: { 
      label: 'Add subcategory', 
      action: function() { 
      console.log('addSubcategory'); 
      } 
     }, 
     editCategory: { 
      label: 'Properties', 
      action: function() { 
      console.log('editCategory') 
      } 
     }, 
     delete: { 
      label: 'Delete', 
      action: function() { 
      console.log('delete Category'); 
      } 
     } 
     }; 

    } 
    } 
});