javascript - 使用 MouseOver 事件控制 dijit.MenuBar

标签 javascript widget dojo

在 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/

相关文章:

javascript - 为什么 JS 框架使用内联样式而不是 CSS 进行布局

javascript - 学习测试 Vue.js 项目 : product display list

javascript - window.open 有时会打开链接,有时不会

javascript - 如何解决此传单错误? getPixelWorldBounds()

javascript - html5 css3 带折射的玻璃效果

python - 使用 MultiSelect 小部件隐藏和显示 Bokeh 中的线条

javascript - 如何解决 Android Phonegap 应用程序 SyntaxError : Parse error?(黑屏问题)

javascript - 道场风格发展

Android 小部件无法接收 DATE_CHANGED 消息

Java SWT Tree TreeItem Listener 返回 Widget Dispose 异常错误