3

我正在玩 Jquery-ui 菜单小部件,我正在尝试获得一些看起来应该非常明显的功能......但我可能会忽略它,或者他们在编写它时可能会忽略它。

我能够很容易地使菜单水平,并使子菜单垂直下降......但是,对于我的生活,当我将鼠标移出菜单时,我无法让子菜单崩溃。它一直呆在那里,直到我点击别的东西。真的很烦人。作为一名设计师,这违背了我所有的感受,我看不出有什么理由让它挂在那里。

我把东西弄坏了,还是我需要添加一些特别的东西?附带说明一下,我一直在摆弄 Jquery-ui js 几个小时,编辑菜单小部件。我在这里修修补补:

// DEFAULT FUNCTION:
    // Clicks outside of a menu collapse any open menus
    this._on( this.document, {
        click: function( event ) {
            if ( !$( event.target ).closest( ".ui-menu" ).length ) {
                this.collapseAll( event );
            }

            // Reset the mouseHandled flag
            this.mouseHandled = false;
        },
        // I ADDED THIS:
        mouseout: function( event ) {
            this.collapseAll( event );
        }
    });

它产生了我想要的行为......有点......现在我对带有子菜单的菜单项进行了不稳定的鼠标输入检测。将一个实时站点放置在菜单仅在某些时候有效的地方并不是很好。有任何想法吗?我这样做是困难的方式还是错误的方式,还是有什么我根本不知道的?我不是最擅长使用 jQuery,事实上才刚刚开始。

我使用的设置基本上是菜单小部件的 jQuery UI 演示页面上示例的增强版本,所以我认为不是我的 html 导致了问题。

4

4 回答 4

1

好的,这只是进行了一些搜索。

我在上一个答案中使用 jplfl 的示例作为指南,并进入 jquery-ui.js 文件,搜索与菜单有关的任何功能。我发现第 9715 行 mouseleave 被绑定到“collapseAll”,而不是调用实际上折叠菜单的函数。我把它改成这样:

    mouseleave: function( event ){
        this.collapseAll( event, true );
    },

现在它可以工作了。

是的。jplfl 的回答绝对有帮助,但我认为这可能是相关的,因为它涉及到更多细节。

于 2013-07-20T18:11:07.917 回答
1

我只是遇到了同样的问题,在这里找到了解决方案。我希望它对你有用。

于 2013-07-09T10:52:05.967 回答
0

我不确定这是否可行:

$(document).ready(function() {
$(“#menu”).menu({
mouseleave: function( event ){ this.collapseAll( event, true ); }
});

但我确信还有另一种选择。您可以查看此链接

于 2014-01-29T01:17:20.433 回答
0

Aaron:只需搜索 'ui.menu' 并向下滚动,直到看到 mouseleave: "collapseAll" 行,对我来说它是 11507 (jquery-ui-1.10.3)

于 2013-07-21T14:37:34.763 回答