jquery - 如何使用 Jquery contextMenu X2 更新 contextMenu
问题描述
我已经像这样添加了这个 contextMenu:
buildContentMenu = {
commands : {}, // i'm add items from external function
makeMenu: function makeMenu(){
$.contextMenu({
selector: '.fullRegularRow',
items: this.commands,
events: {
show : function(options){
var serverId = this.attr("id").replace("server","").replace(/\-+/g, '.');
var fanMode = this.attr("fanMode");
var powerMode = this.attr("powerMode");
menuListManager.addOptionsToMenu(serverId, fanMode, powerMode)
console.log(serverId);
}
}
});
现在我想将项目添加到菜单列表中。
所以我更新了命令对象并尝试像这样更新 contectMenu 但对我不起作用:
$.contextMenu('update');
任何机构都可以帮助我如何更新我的菜单?
解决方案
几个小时后,我找到了答案。
关键是,如果我想在菜单显示之前构建它,我必须使用build。现在,在菜单准备好显示之前,我可以通过编辑对象命令(在我的例子中)来重新排列我想要显示的内容。
这是我的精细代码:
$.contextMenu({
selector: '.fullRegularRow, .COLservers4, .COLservers2, .quarterOf2U, .fullDoubledRow, .fullQuadrdRow',
build : function($triggerElement, e){
var fanmode = ( $triggerElement[0].attributes["data-fanmode"].value);
var powermode = ( $triggerElement[0].attributes["data-powermode"].value);
if(fanmode == "STANDARD_MODE"){
menuListManager.commands["strdFanMode"] = {callback: function(key, opt){ menuList.sendMenuRequest(key, serverURL); }, name: "Fan mode", icon: "fas fa-check"};
menuListManager.commands["zutaFanMode"] = {callback: function(key, opt){ menuList.sendMenuRequest(key, serverURL); }, name: "Fan mode"};
}else{
menuListManager.commands["strdFanMode"] = {callback: function(key, opt){ menuList.sendMenuRequest(key, serverURL); }, name: "Fan mode"};
menuListManager.commands["zutaFanMode"] = {callback: function(key, opt){ menuList.sendMenuRequest(key, serverURL); }, name: "Fan mode", icon: "fas fa-check"};
}
if(powermode == "STANDARD_MODE"){
menuListManager.commands["strdPowerMode"] = {callback: function(key, opt){ menuList.sendMenuRequest(key, serverURL); }, name: "Power mode", icon: "fas fa-check"};
menuListManager.commands["zutaPowerMode"] = {callback: function(key, opt){ menuList.sendMenuRequest(key, serverURL); }, name: "Power mode"};
}else{
menuListManager.commands["strdPowerMode"] = {callback: function(key, opt){ menuList.sendMenuRequest(key, serverURL); }, name: "Power mode"};
menuListManager.commands["zutaPowerMode"] = {callback: function(key, opt){ menuList.sendMenuRequest(key, serverURL); }, name: "Power mode", icon: "fas fa-check"};
}
return {
callback: function(){},
items: menuListManager.commands,
};
}
});
希望它对某人有所帮助。