在Dojo中,是否可以配置dijit.MenuBar以便菜单由MouseOver和MouseOut事件触发?实际上这种行为已经可用,但它通过初始或连续的鼠标点击事件打开或关闭 - 所以最初,MouseOver不会导致菜单弹出,但是如果用户点击菜单项,则菜单栏会响应MouseOver事件。连续单击鼠标将再次关闭此行为。
我想要的是基于MouseOver事件弹出的菜单和子菜单,不受点击事件的干扰。请查看http://dojotoolkit.org/reference-guide/dijit/MenuBar.html上的示例,了解我的意思。
答案 0 :(得分:2)
你的问题引起了我的兴趣,足以制作working solution。
我检查了dijit / Menu.js上的dijit._MenuBase源代码,显然有一个this.isActive标志在继续之前被检查过。所以我创建了一个子类,只是事先将此标志设置为true:
_ActivateOnMouseoverMixin = dojo.declare(null, {
onItemHover: function(item){
if(!this.isActive){
this._markActive();
}
this.inherited(arguments);
}
});
ActiveMenuBar = dojo.declare([dijit.MenuBar, _ActivateOnMouseoverMixin], {});
作为奖励,您还可以使用popupDelay变量修改延迟(我在示例中将其更改为更快)
我不知道是否还有另一种更理智的方式来做同样的事情。
答案 1 :(得分:0)
这是一个将'Hugomg'解决方案扩展到取消菜单和子菜单的示例:
[在此输入链接描述] [1]
[1]: http://jsfiddle.net/vg10c9md/2/