在 Dojo 中,是否可以配置 dijit.MenuBar 以便菜单由 MouseOver 和 MouseOut 事件触发?实际上这个行为已经可用,但它是由初始或连续的鼠标点击事件打开或关闭的 - 所以最初,MouseOver 不会导致菜单弹出,但如果用户点击菜单项,菜单栏就会响应 MouseOver 事件.连续点击鼠标将再次关闭此行为。
我想要的是基于鼠标悬停事件弹出的菜单和子菜单,不受点击事件的干扰。请在 http://dojotoolkit.org/reference-guide/dijit/MenuBar.html 查看示例明白我的意思。
最佳答案
你的问题激起了我的兴趣,足以使我成为 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 变量修改延迟(我在示例中将其更改为更快)
我不知道是否有另一种更明智的方法来做同样的事情。
关于javascript - 使用 MouseOver 事件控制 dijit.MenuBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7850768/