如何从JQuery函数中将值推送到数组

时间:2013-05-01 12:16:32

标签: javascript jquery

我有这个Javascript变量:

var Item_properties = {
   id : null,
   keys : [],
   hydrate: function() {
       //get data
       this.id = $('input[id=id]').val();

       $("#item_key div input").each(function(index) {
          this.keys.push($(this).val());
       });
}

无法推送密钥数组中的任何数据,我收到的消息是: 无法调用未定义的方法'push'

有什么想法吗?

3 个答案:

答案 0 :(得分:7)

jQuery将this设置为回调到.each的DOM元素。您可以将this保存到变量中,然后使用它。

var self = this;
$("#item_key div input").each(function(index) {
  self.keys.push($(this).val()));
}

答案 1 :(得分:1)

试试这样:

var $this = this;
$("#item_key div input").each(function (index) {
    $this.keys.push($(this).val());
});

由于每个循环内的this实际上是对输入标记的引用,因此您的代码无效。但是你需要在这里引用 Item_properties

答案 2 :(得分:0)

虽然two其他answers还可以,但这是另一种方法。

您可以使用

Item_properties.keys.push($(this).val());

而不是

this.keys.push($(this).val());