1

jQuery UI Menuを使用して複数のドロップダウン メニューを作成する必要があります。その前に、この目的のためにjQuery UI Selectmenuを使用しました。

Selectmenu は に基づいておりselect、メソッドを使用してval()選択値を取得/設定できます。現在、メニューは ul/li に基づいているため、そのようなオプションはありません。

したがって、次の動作を何らかの方法でエミュレートする必要があります。

someMenu.menu();
//....                
someMenu.val(someValue);
someMenu.menu("refresh");

メニューウィジェットを拡張して、次のようないくつかのメソッドを追加しようとしました:

 $.widget("market.multiDropdownMenu",$.ui.menu, {
    //....
    getSelectedItem: function () {
        return this.active;             
    },

    setSelectedItem: function(elem){
        var elem = this.element.find(elem).first();
        if (elem) {
            this.active = elem;
            this.focus('focus', elem);
            this.element.find('.ui-menu-item.selected').removeClass('selected');
            this.getSelectedItem().addClass('selected');  
        }
    },
    //....
}

そして、次のように使用します。

// for getter
var elem = someMenu.multiDropdownMenu("getSelectedItem"); // getting null
// and for setter
var newElem = ...
someMenu.multiDropdownMenu("setSelectedItem", newElem);
someMenu.multiDropdownMenu("refresh");

しかし、いくつかの値を設定し、次回activeフィールドがnull.

elem.trigger('click');代わりにフォーカスイベントを使用しようとしましたが、成功しませんでした。

4

1 に答える 1