首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过.push()方法向对象添加项

通过.push()方法向对象添加项
EN

Stack Overflow用户
提问于 2011-09-01 02:10:16
回答 5查看 409.8K关注 0票数 72

我正在对几个'checkbox‘类型的输入元素进行循环。之后,我将值和选中的属性添加到数组中。这是我的代码:

代码语言:javascript
复制
var stuff = {};
$('form input[type=checkbox]').each(function() {
    stuff[$(this).attr('value')] = $(this).attr('checked');
});

这很好用,但是我想知道我是否可以用Jquery中的.push()方法做同样的事情?

我试过这样的方法,但不起作用:

代码语言:javascript
复制
stuff.push( {$(this).attr('value'):$(this).attr('checked')} );

编辑:

我试图在Object上使用.push()方法,但.push()实际上只是一个数组对象的方法。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-01 02:13:30

是的一种方法

它与jQuery没有任何关系。

您正在使用以下命令定义文本对象

代码语言:javascript
复制
// Object
var stuff = {};

您可以像这样定义一个文字数组

代码语言:javascript
复制
// Array
var stuff = [];

然后

代码语言:javascript
复制
stuff.push(element);

数组实际上从它们的父对象继承了它们的括号语法stuff[index]。这就是为什么您能够像在第一个示例中那样使用它。

这通常用于动态访问属性的轻松反射。

代码语言:javascript
复制
stuff = {}; // Object

stuff['prop'] = 'value'; // assign property of an 
                         // Object via bracket syntax

stuff.prop === stuff['prop']; // true
票数 142
EN

Stack Overflow用户

发布于 2015-07-06 21:24:14

所以这很简单))

看这个。

代码语言:javascript
复制
    var stuff = {};
    $('input[type=checkbox]').each(function(i, e) {
        stuff[i] = e.checked;
    });

您将拥有:

代码语言:javascript
复制
Object {0: true, 1: false, 2: false, 3: false}

或者:

代码语言:javascript
复制
$('input[type=checkbox]').each(function(i, e) {
    stuff['row'+i] = e.checked;
});

您将拥有:

代码语言:javascript
复制
Object {row0: true, row1: false, row2: false, row3: false}

或者:

代码语言:javascript
复制
$('input[type=checkbox]').each(function(i, e) {
    stuff[e.className+i] = e.checked;
});

您将拥有:

代码语言:javascript
复制
Object {checkbox0: true, checkbox1: false, checkbox2: false, checkbox3: false}
票数 19
EN

Stack Overflow用户

发布于 2011-09-01 02:12:53

stuff是一个对象,而push是一个数组的方法。因此您不能使用 stuff.push(..)**.**

假设您将stuff定义为一个数组stuff = []; ,然后您可以对其调用方法。

这是因为objectkey/value的格式是正确的。

stuff.push( {'name':$(this).attr('checked')} );

然而,这不会起作用,因为对象的格式不正确。

stuff.push( {$(this).attr('value'):$(this).attr('checked')} );

这之所以有效,是因为我们将stuff视为关联数组并向其添加值

stuff[$(this).attr('value')] = $(this).attr('checked');

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7261431

复制
相关文章

相似问题

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