2011-06-03 71 views
3

這應該是一個非常簡單的問題,但我似乎無法在任何地方找到答案。我最近(如今天)開始使用jsTree,並且剛剛建立了第一棵樹。我剛創建靜態文本的無序列表:jsTree contextmenu issue

<ul> 
    <li>one</li> 
    <li>two</li> 
    <li>three</li> 
</ul> 

我的代碼做一個jsTree看起來是這樣的:

$(document).ready(function() { 
     $("#demo1").bind("select_node.jstree", 
       function(event, data) { 
        //DO SOMETHING WHEN A NODE IS CLICKED 
       }).jstree(); 
}); 

然後我嘗試添加上下文菜單。使用以下內容:

$(document).ready(function() { 
     $("#demo1").bind("select_node.jstree", 
       function(event, data) { 
        //DO SOMETHING WHEN A NODE IS CLICKED 
       }).jstree({plugins: ["contextmenu"], contextmenu: {items: customMenu}}); 
    }); 

customMenu是一個簡單的函數,它返回一個對象。

當我執行第一個代碼時,我得到我的jsTree並崩潰並展開。當我執行第二個時,jsTree所在的區域顯示爲「Loading ...」,這就是全部。如果我右鍵單擊那個單詞,我會得到菜單。

有什麼建議嗎?

如果,當我把它指向函數customMenu,我添加了(),然後我得到,有一個很奇怪的菜單: -create -rename -delete -edit --Cut --copy --paste - 添加組 - 刪除

我不知道我知道發生了什麼事。我改變了函數名稱,以確保我沒有得到一個jQuery或jsTree函數,但我仍然得到奇怪的行爲。有什麼建議麼?

+0

嘗試在這裏:) http://stackoverflow.com/questions/4559543/configuring-jstree-right -Click-文本菜單換不同節點類型/ 11067303#11067303 – 2012-06-16 23:17:14

回答

2

建議您不要自己處理contextmenu創建,而是讓jstree爲您做。

所以在初始化代碼,你可以這樣寫:

$("#demo1").jstree(
{ 
    "plugins" : [ "contextmenu" ] 
} 

,這將是足夠了一個功能文本菜單。

1

不要將選擇方法綁定到jstree。請按照下面的代碼創建新的菜單項。 這應該很好。

$("#demo1").jstree(
{ 
    "contextmenu":{ 
     items:{ 
       "LogicalNameForMenuItem":{ 
        label: "DisplayNameForMenuItem", 
        action: function (node) { 
          <--Your code to handle the function goes here--> 
        } 
       } 
      } 
     }, 

     "plugins" : [ "contextmenu","crrm","ui" ] 

}); 

這應該有效。

如果你想刪除默認的菜單項,然後將其設置爲false

"contextmenu":{ 
     items:{ 
      create:false, 
      remove:false, 
      ccp:false 
     } 
}