2010-05-26 44 views
0

我有什麼是一個單獨的dijit.Menu,其中包含標籤爲1 - 9的dijit.MenuItem對象。它連接到一個數獨81'節點'(因爲有這麼多,我不打擾個人身份證,我只是收集他們與dojo.query('他們的-CSS類名'))。這是我在一個小部件中用來實例化上下文菜單及其菜單項的代碼。Dojo彈出式菜單 - 將菜單項事件連接到多個「觸發」元素

var contextMenu = new dijit.Menu({targetNodeIds:dojo.query(".sudokuNode"), leftClickToOpen:true}); 

    for(var i = 1; i <= 9; i++) { 
     contextMenu.addChild(new dijit.MenuItem({ 
      label:i, 
      onClick: function(evt) { 
       //?? 
      } 
     })); 
    }; 

    contextMenu.startup(); 

我想要做的就是有被點擊的節點,隨後會打開一個彈出/上下文菜單,充滿了從上下文菜單的選擇的MenuItems的值(1-9)。

我的問題是,我不知道如何「知道」,這81個節點是觸發oncontextmenu事件之一,我不知道如何引用在聲明中的「onClick」方法內部節點菜單項。

任何幫助演示如何引用在這種情況下的調用節點,將不勝感激!如果這些信息不足,請告訴我還能做些什麼來解釋我的問題!

回答

0

evt.target應該讓你看到實際點擊過的節點。根據結構,您可能需要從那裏進行其他導航,或使用dijit.getEnclosingWidget()

如果MenuItems允許事件冒泡(我不確定;沒有使用它自己),您可以連接到Menu的onClick()方法,因此您只能使用單個事件偵聽器。

+0

嗯,問題仍然是我想要在選擇菜單項時發生onClick。 evt.target是menuItem本身,封閉的小部件是菜單...這兩種都沒有給我任何方式去點擊(我知道)的節點... – Dfowj 2010-05-27 18:12:05

+0

點擊的節點將是一個來自MenuItem模板的內部節點,所以你可能得不到你期望的。但是,您可以選擇dojo.connect到'onclick'DOM事件(N.B.而不是'onClick'這是一種小部件方法),而您需要檢查事件嗎? 您可能需要鏈接到您描述的此網格的示例,因爲我無法完全描繪它。 – 2010-06-03 08:43:19