我正在对几个'checkbox‘类型的输入元素进行循环。之后,我将值和选中的属性添加到数组中。这是我的代码:
var stuff = {};
$('form input[type=checkbox]').each(function() {
stuff[$(this).attr('value')] = $(this).attr('checked');
});
这很好用,但是我想知道我是否可以用Jquery中的.push()方法做同样的事情?
我试过这样的方法,但不起作用:
stuff.push( {$(this).attr('value'):$(this).attr('checked')} );
编辑:
我试图在Object上使用.push()方法,但.push()实际上只是一个数组对象的方法。
发布于 2011-09-01 02:13:30
是的一种方法
它与jQuery没有任何关系。
您正在使用以下命令定义文本对象
// Object
var stuff = {};
您可以像这样定义一个文字数组
// Array
var stuff = [];
然后
stuff.push(element);
数组实际上从它们的父对象继承了它们的括号语法stuff[index]
。这就是为什么您能够像在第一个示例中那样使用它。
这通常用于动态访问属性的轻松反射。
stuff = {}; // Object
stuff['prop'] = 'value'; // assign property of an
// Object via bracket syntax
stuff.prop === stuff['prop']; // true
发布于 2015-07-06 21:24:14
所以这很简单))
看这个。
var stuff = {};
$('input[type=checkbox]').each(function(i, e) {
stuff[i] = e.checked;
});
您将拥有:
Object {0: true, 1: false, 2: false, 3: false}
或者:
$('input[type=checkbox]').each(function(i, e) {
stuff['row'+i] = e.checked;
});
您将拥有:
Object {row0: true, row1: false, row2: false, row3: false}
或者:
$('input[type=checkbox]').each(function(i, e) {
stuff[e.className+i] = e.checked;
});
您将拥有:
Object {checkbox0: true, checkbox1: false, checkbox2: false, checkbox3: false}
发布于 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');
https://stackoverflow.com/questions/7261431
复制相似问题