我拥有的是一个dijit.Menu,它包含标签为1 - 9的dijit.MenuItem对象。它连接到一个数独的81'节点网格的数独(因为有这样的网格)很多,我不打扰个人id,我只是用dojo.query('他们的css-class-name'))收集它们。这是我在窗口小部件中使用的代码,用于实例化上下文菜单及其菜单项。
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 :(得分:0)
evt.target
应该为您提供实际点击的节点。根据结构的不同,您可能需要从那里进行其他导航,或使用dijit.getEnclosingWidget()
。
如果MenuItems允许事件冒泡(我不确定;我自己没有使用过),你可以连接到菜单的onClick()
方法,所以你只获得了单个事件听众在玩耍。