在悬停上打开JQuery UI SelectMenu

时间:2016-04-14 11:29:27

标签: jquery jquery-ui

我正在使用JQuery selectmenu,并希望在鼠标悬停时将其打开并关闭它。

这就是我的尝试:

jQuery('.selectbox')
    .selectmenu()
    .selectmenu('widget').hover(function() { jQuery(this).selectmenu('open'); });

错误:

jquery-1.12.3.min.js:2 Uncaught Error: cannot call methods on 
   selectmenu prior to initialization; attempted to call method 'open'

但是我无法以这种方式访问​​selectmenu来打开它。另外,当鼠标在菜单项上移动时,我想我需要保持打开状态?

1 个答案:

答案 0 :(得分:1)

修改

事实证明这无论如何都会提供糟糕的用户体验,所以在使用此代码之前请考虑一下: - )

我能够使用以下功能创建自定义小部件:

_leaveWidget: function(event) {
    var target = event.toElement || event.relatedTarget || event.target;
    if (!(
        jQuery.contains(this.button.get(0), target) ||
        jQuery(this.button.get(0)).is(target) ||
        jQuery.contains(this.menu.get(0), target) ||
        jQuery(this.menu.get(0)).is(target)
    )) {
        this.close();
    }
},

_create: function () {
    this._super();
    var that = this;
    this._on(this.button, {
        mouseenter: function (event) {
            that.open();
        },
        mouseout: that._leaveWidget
    });

    this._on(this.menu, {
        mouseout: that._leaveWidget
    });
},

<强>更新

以下适用于Firefox,Chrome和IE 11(较低的IE未测试)

{{1}}