jQuery-ui菜单子菜单不会在mouseout上崩溃

时间:2013-06-30 04:41:20

标签: javascript jquery jquery-ui mouseout jquery-ui-menu

我正在使用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 个答案:

答案 0 :(得分:1)

我遇到了同样的问题并找到了解决方案here。我希望它适合你。

答案 1 :(得分:1)

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

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

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

现在它有效。

所以,是的。 jplfl的答案肯定是有帮助的,但我认为这可能是相关的,因为它更详细一些。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我不确定这是否有效:

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

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