jQuery UI 菜单 get/set 用于活动 ui-菜单项
jQuery UI Menu get/set for active ui-menu-item
为此,我需要使用 jQuery UI Menu. Before that we used jQuery UI Selectmenu 制作多个下拉菜单。
Selectmenu 基于select
,其中可以使用val()
方法来get/set select 值。现在菜单基于 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');
而不是焦点事件,但没有成功。
我不完全清楚你想在这里做什么,但你可以做的是为你选择的菜单中的任何元素设置一个 class。然后,如果您想知道选择了哪个,只需使用 class.
设置选择:
$( "#menu" ).menu({
select: function(event, ui) {
$('.selectedItem').removeClass('selectedItem');
$(event.currentTarget).addClass('selectedItem');
}
});
获取选定值:
$('.selectedItem').text();
为此,我需要使用 jQuery UI Menu. Before that we used jQuery UI Selectmenu 制作多个下拉菜单。
Selectmenu 基于select
,其中可以使用val()
方法来get/set select 值。现在菜单基于 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');
而不是焦点事件,但没有成功。
我不完全清楚你想在这里做什么,但你可以做的是为你选择的菜单中的任何元素设置一个 class。然后,如果您想知道选择了哪个,只需使用 class.
设置选择:
$( "#menu" ).menu({
select: function(event, ui) {
$('.selectedItem').removeClass('selectedItem');
$(event.currentTarget).addClass('selectedItem');
}
});
获取选定值:
$('.selectedItem').text();