将多个对象添加到一个对象中

时间:2011-11-01 17:49:00

标签: jquery backbone.js

如何将多个对象添加到一个对象中?我有一个selectbox change事件,它有一个像这样的处理程序:

this.selectBoxChanges = {};

onSelect: function(event){
    var p = $(event.currentTarget).attr('id');
    var obj = {};
    obj[p] = $(event.currentTarget).val();
    this.selectBoxChanges = obj;
},

我想要做的是将我的所有对象存储在一个名为selectBoxChanges的对象中,这样当选择确认按钮时,所有对象都将传递给骨干模型。像这样:

onConfirm: function(){
    this.model.set(this.selectBoxChanges);
}

3 个答案:

答案 0 :(得分:0)

您可以为对象指定属性。属性可以是变量,函数,另一个对象,另一个属性等。

var selectBoxChanges = {
    "values" : {
        "oldValue" : oldVal,
        "newValue" : newVal
    },
    "anotherProperty": someVariable,
    "functionProperty": function () {
       // do stuff
    }
};

答案 1 :(得分:0)

我想答案很简单,直到我发布了所有我必须做的线程才看到它

this.selectBoxChanges = {};

onSelect: function(event){
    var p = $(event.currentTarget).attr('id');
    this.selectBoxChanges[p] = $(event.currentTarget).val();
},

答案 2 :(得分:0)

哈,在我提交这个答案之前,你在下面给出了答案。无论如何我会离开它听听:)

原帖 - >

您是在尝试在对象中存储多个表单元素,还是在尝试从对象中的同一个列表框中存储多个值?

你可以像selectBoxChanges一样添加属性,就像你当前将它们添加到你的obj对象一样:

selectBoxChange[this.id] = $(this).val();

但是,如果您尝试重复对同一个对象执行此操作,则需要能够使用除了可以由主干使用的元素ID之外的其他内容。

如果你想追加用户从下拉列表中选择的所有不同项目,你可以存储一系列项目:

if(selectBoxChange[this.id]) {
  selectBoxChange[this.id].push($(this).val());
} else {
  selectBoxChange[this.id] = [$(this).val()];
}
相关问题