首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery多级Javascript对象的动态创建

jQuery多级Javascript对象的动态创建
EN

Stack Overflow用户
提问于 2013-09-14 10:06:30
回答 1查看 2.7K关注 0票数 4

jTable (jTable.org)布局由下面的代码定义。我想动态地构建它(基于来自数据库查询的AJAX返回)。

代码语言:javascript
复制
{
    title: 'My Dynamic Title',
    fields: {
        id: {
            title: 'ID'
        },
        salesperson: {
            title: 'Salesperson'
        },
        pivot1: {
            title: '2012-01'
        },
        pivot2: {
            title: '2012-02'
        },
        pivot3: {
            title: '2012-03'
        }
    }
}    

所显示的数据是一个枢轴表,因此列数及其标题将发生变化。我可以动态地修改上面的字段部分吗?例如,有四个枢轴列和相关的列标题。

答案

多亏了巴玛尔和广泛的阅读我才弄明白的。诀窍是在每个级别插入一个新对象。将其插入jsfiddle.net中,您就可以看到结果。它将以编程方式创建上面的对象。

代码语言:javascript
复制
var myobj = {}; //description for jquery-jtable configuration.
var colnames = ['pivot1', 'pivot2', 'pivot3'];
var titles   = ['2012-01', '2012-02', '2012-03'];

myobj['title'] = "My Dynamic Title";
myobj['fields'] = {};                     //create a second level under 'fields'.
myobj.fields['id'] = {title: 'ID'};
myobj.fields['salesperson'] = {title: 'Salesperson'};
for(i = 0; i < colnames.length; i++) {
    myobj.fields[colnames[i]] = {};       //create a third level under column name.
    myobj.fields[colnames[i]].title = titles[i];
}
alert(JSON.stringify(myobj, null, 4));
EN

回答 1

Stack Overflow用户

发布于 2013-09-14 10:19:26

我没有看到一种动态更改字段规范的方法。但是,如果要修改表,只需销毁旧的jTable并重新初始化它:

代码语言:javascript
复制
$("#TableContainer").jtable("destroy");
$("#TableContainer").jtable({
    // New options
});

如果有一些选项在所有实例中保持一致,则可以使用变量来保存这些选项:

代码语言:javascript
复制
var jtable_options = {
    title: "My Table Title",
    fields: {}
};

在初始化jtable之前,您需要:

代码语言:javascript
复制
jtable_options.fields = {
    id: { title: 'ID' },
    salesperson: { title: 'Salesperson' }
    ...
};
$("#TableContainer").jtable(jtable_options);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18800609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档