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
after ステップ2
は閉じる必要がありますが、そうではありません。
では、そのようなケースを確認してこの問題を解決するにはどうすればよいでしょうか?
編集:
this.originalSelect
<select>
HTML要素ですthis.button
div要素です。選択したオプションのテキストが表示される場所 (基本的には表示されるものと同じui.selectmenu
);