我通过扩展 jQuery UI 的Menu创建了自定义小部件。它基本上需要像ui.selectmenu<select>
那样使用HTML 元素,但在子菜单中显示选项:
$.widget("market.myMenu",$.ui.menu, {
// ...
_attachEvents: function(){
var self = this;
// menu is initially hidden
self.menuWrapper.hide();
self.button.on('click', function(){
if (self.originalSelect.is(':disabled')) {
self.disable();
} else {
self.menuWrapper.toggle();
}
return false;
});
$(document).on('click', function(){
self.menuWrapper.hide();
});
},
//...
}
}
当此小部件附加到多个元素时会出现问题,例如:
someSelect.myMenu();
//...
anotherSelect.myMenu();
问题在标题中列出,您可以在_attachEvents()
方法中看到它:
- 当用户点击
someSelect
它时,它应该会打开 - 然后用户点击
anotherSelect
它也会打开 someSelect
步骤后2
应该关闭,但事实并非如此。
那么如何检查这种情况并解决这个问题呢?
编辑:
this.originalSelect
是<select>
HTML 元素this.button
是 div 元素。在其上显示选定的选项文本(基本上与ui.selectmenu
所做的相同);