繁体   English   中英

jQuery UI Menu get / set for active ui-menu-item

[英]jQuery UI Menu get/set for active ui-menu-item

我需要使用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'); 相反,焦点事件没有成功。

对我来说,尚不十分清楚您想在此处做什么,但是可能可以为选中菜单中的任何元素设置一个类。 然后,如果您想知道选择了哪个,则只需使用该类。

设置选中:

$( "#menu" ).menu({
    select: function(event, ui) {
        $('.selectedItem').removeClass('selectedItem');
        $(event.currentTarget).addClass('selectedItem');

    }
});

获取所选值:

$('.selectedItem').text();

小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM