控制dijit.带有鼠标悬停事件的菜单栏
Controlling dijit.MenuBar with MouseOver events
在Dojo中,是否可以配置dijit ?菜单栏,使菜单触发MouseOver和MouseOut事件?实际上,这种行为已经可用,但它是通过初始或连续的鼠标单击事件打开或关闭的-因此,最初,MouseOver不会导致菜单弹出,但如果用户单击菜单项,菜单栏就会响应MouseOver事件。连续的鼠标点击将再次关闭此行为。
我想要的是菜单和子菜单弹出基于MouseOver事件没有点击事件的干扰。请查看http://dojotoolkit.org/reference-guide/dijit/MenuBar.html上的示例,了解我的意思。
你的问题引起了我的兴趣,我想出了一个可行的解决方案。
我检查了dijit。_MenuBase的源代码在dijit/Menu.js,显然有一个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变量修改延迟(我在示例中更改它以更快)
我不知道是否有另一种更合理的方法来做同样的事情。
下面是一个扩展了'Hugomg'解决方案的示例,用于取消菜单和子菜单的悬停:
[1]
[1]: http://jsfiddle.net/vg10c9md/2/
相关文章:
- 滚动后保持固定的菜单栏不起作用
- 菜单栏class=活动引导程序主题无法正常工作
- 在BootStrap菜单栏中为所选项目设置背景,类似于BootStrap中的父导航选项
- 通过侧菜单栏进行rails页面导航
- Dojo菜单栏选定状态
- 如何在IE中隐藏菜单栏,工具栏
- 处理一个项目,想要添加以下菜单栏,并尽量减少向下滑动
- 无法在 NW.js 中切换窗口菜单栏可见性
- 突出显示菜单栏上的活动菜单项
- 我的菜单栏隐藏在PasteBin的javascript下
- Electron从菜单栏打开新的全屏窗口
- 单击菜单栏打开jQuery对话框作为登录框
- 页面底部的FB样式菜单栏被内容覆盖
- 如何将 jquery 对话框显示为单击菜单栏中的链接时的警报
- 使用 Jquery 2 的菜单栏
- 滚动时固定在页面顶部的菜单栏会导致下面的内容在滚动过程中跳转
- 播放声音并在单击(菜单栏)时交换图像
- 使用 html/js/css 创建 Mac 菜单栏应用程序
- 带有角度的动态菜单栏
- 控制dijit.带有鼠标悬停事件的菜单栏