如何将if语句添加到对象块

时间:2014-07-31 20:31:25

标签: javascript jquery object if-statement contextmenu

此脚本有效,并且是构建上下文菜单的示例脚本..但我需要它根据所点击的内容进行不同的构造。如何将if语句应用于列表中的每个项目,例如在满足条件时隐藏“编辑”项等,等等。

    $(function(){
    $.contextMenu({
        selector: '.context-menu-one', 
        build: function($trigger, e) {
            return {
                items: 
                {
                    "edit": 
                    {
                        name: "Edit",
                        icon: "edit",
                        callback: function(key, options) 
                        {
                            // some code to perform
                        }
                    },
                    "cut": {name: "Cut", icon: "cut"},
                    "copy": {name: "Copy", icon: "copy"},
                    "paste": {name: "Paste", icon: "paste"},
                    "delete": {name: "Delete", icon: "delete"},
                    "sep1": "---------",
                    "quit": {name: "Quit", icon: "quit"}
                }   
            };
        }
    });
});

2 个答案:

答案 0 :(得分:1)

使用IIFE

var foo = {
  bar: {
    baz: (function() {
      // some code here
      return "value";
    })()
  }
};

foo.bar.baz // => "value"

答案 1 :(得分:1)

您可以构造items对象然后将其返回:

$.contextMenu({
    selector: '.context-menu-one',
    build: function ($trigger, e) {
        var items = {
            "cut": {name: "Cut", icon: "cut"},
            "copy": {name: "Copy", icon: "copy"},
            "paste": {name: "Paste", icon: "paste"},
            "delete": {name: "Delete", icon: "delete"},
            "sep1": "---------",
            "quit": {name: "Quit", icon: "quit"}
        };

        if (someCondition) {
            items.edit = {
                name: "Edit",
                icon: "edit",
                callback: function(key, options) {
                    // some code to perform
                }
            };
        }

        return {items: items};
    }
});

这样您就可以在返回项目之前定义一些属性。