jquery合并预定义选项

时间:2012-11-15 14:16:43

标签: jquery merge options

我正在使用jqgrid,那里有太多选项。 我想要做的是设置预定义的选项,并在以后使用它。

//my predefined options 
var edit_options = {
editrules:
{
    required:true 
    ,edithidden:true
    ,editable:true
}

然后执行

jGrid.jqGrid({
...
colNames:['id','Code', 'Name'],
    colModel:[
    //id
    {name:'sample_id'
        ,index:'sample_id'
    },
    //Code
    {name:'sample_code'
        ,index:'sample_code'
        ,edit_options
    },
    //Name
    {name:'sample_name'
        ,index:'sample_name'
        ,edit_options
    }

当然'edit_options'会出错。如何正确地做到这一点? 我只想要第二个和第三个选项来使用预定义的选项。 我正在看$ .extend(),但无法正确判断它。

2 个答案:

答案 0 :(得分:0)

有一些语法错误。首先,}末尾缺少edit_options

{name:'sample_id'
    ,index:'sample_id'
    ,edit_options
},

此代码错误,您必须为第三个成员指定名称。你必须这样做:

{name:'sample_id'
    ,index:'sample_id'
    , options : edit_options // Replace 'options' by the good name
},

答案 1 :(得分:0)

您可以使用jQuery的extend - 方法:

jGrid.jqGrid({
...
colNames:['id','Code', 'Name'],
    colModel:[
       $.extend(true,
          {
             name:'sample_code',
             index:'sample_code'
          }, 
          editOptions
       ),
       $.extend(true, setupCode, editOptions),
       $.extend(true, setupCode, editOptions)
    ]
});

此方法采用任意数量的对象,并将每个对象的属性依次复制到第一个对象中。请注意,如果多次存在相同的密钥,则当前值将被新密钥覆盖。