首页 > 解决方案 > 如何使用 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');

任何机构都可以帮助我如何更新我的菜单?

标签: jquerycontextmenu

解决方案


几个小时后,我找到了答案。

关键是,如果我想在菜单显示之前构建它,我必须使用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,      
                };

            }
    });

希望它对某人有所帮助。


推荐阅读