是否可以捕获jstree上下文菜单项的点击?

时间:2012-04-16 20:03:39

标签: javascript jquery json eval jstree

是否可以捕获jstree上下文菜单项的点击?

我从json的文件加载像这样的上下文菜单

{
    "item1" : {
        "label" : "item 1",
        "action" : "function(){alert('item 1')}"

     },
    "item2" : {
        "label" : "item 2",
        "action" : "function(){alert('item 2')}"
    }
}

我想捕获上下文菜单项的单击以评估该函数并执行它。这可能吗?

1 个答案:

答案 0 :(得分:0)

我这样解决了:

$("#tree").jstree({ 
    "plugins" : [ "json_data"],
    "json_data" : {
        "ajax" : {
        "type": 'GET',
         "url": "json_data.json";
         "success": function (new_data) {   
                  return new_data;
          }
         }
       },
       "contextmenu" : {
        "items" : customMenu
        }
});


function customMenu(node) {
    var items = {};

    $.ajax({
       url: "contextmenu.json",
       dataType: 'script',
       async : false,
       success : function( script ){    
           eval(script)
           items = menuItems;                   
       } 
    });

    return items;
} 



// file: "contextmenu.json"
var menuItems = {
    "item1" : {
        "label" : "item 1",
        "action" : function(){alert('item 1')}

     },
    "item2" : {
        "label" : "item 2",
        "action" : function(){alert('item 2')}
    }
}