bearbeiten
Es ist diese eine sowieso schlechte Benutzererfahrung stellte sich heraus stellt, so beachten Sie bitte, dass vor diesem Code :-)
ich in der Lage war, mit, dass ein eigenes Widget zu erstellen Funktionalität wie folgt aus:
jQuery.widget("custom.hoverSelectmenu", jQuery.ui.selectmenu, {
_create: function() {
this._super();
var that = this;
this._on(this.button, {
mouseenter: function(event) {
that.open();
},
mouseleave: function(event) {
if (event.toElement != that.menu.get(0)) {
that.close();
}
}
});
this._on(this.menu, {
mouseleave: function(event) {
if (event.toElement != that.button.get(0)) {
that.close();
}
}
});
}
});
jQuery('.selectbox').hoverSelectmenu({
});
Update
Folgende Arbeiten in Firefox, Chrome und IE 11 (untere IE nicht getestet)
_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
});
},
Verwenden '.on ('MouseEnter-')' statt '.hover()'. 'hover()' fügen Sie die Mouseout-Funktionalität hinzu –