是否可以使用jQuery元素对象作为数组/对象键?使用jQuery元素对象作为数组键?
例子:
var el = jQuery(this);
var test = {};
test[el] = "something strange";
做一个:
jQuery.each(test, function(k,v){
console.log(k);
});
刚刚报告的翻译:
有没有说,我其实可以重复使用k
作为原始的jQuery元素对象?
是否可以使用jQuery元素对象作为数组/对象键?使用jQuery元素对象作为数组键?
例子:
var el = jQuery(this);
var test = {};
test[el] = "something strange";
做一个:
jQuery.each(test, function(k,v){
console.log(k);
});
刚刚报告的翻译:
有没有说,我其实可以重复使用k
作为原始的jQuery元素对象?
不,这是不可能的。
ECMAscript只允许strings
作为对象的键值。
你可以做的是改用id value
而不是单个节点。所以它可能看起来像
var el = jQuery(this);
var test = {};
test[this.id] = "something strange";
这当然需要节点有一个id值。
对,好吧。那么,我想我必须为我的目的生成一个通用的ID;够简单。 – 2012-03-11 23:12:25
id是元素上的属性“id”还是别的? – hfossli 2013-01-21 15:24:15
当您使用$.each([],function(i,v)){}
i是索引,v是值。
OP知道。问题是为什么索引被报告为“[object object]”(注意,在这种情况下,“索引”是键或属性名称,因为OP使用普通对象而不是数组),是吗?可能在JS中使用对象作为属性名称。 – nnnnnn 2012-03-12 00:33:47
只要您尝试将对象分配为数组键,就会看到对象已转换为字符串('[object Object]'
)。对于简单的哈希,你可以想象将它们序列化为一个键:
var obj = { foo: 'bar' },
key = JSON.stringify(obj),
obj2 = { key: 'something strange' };
虽然,你一定要避免这种事情。你可以使用包含对象和消息的并行数组,而不是:
var keys = [ {foo: 'bar'}],
values = [ 'something strange' ];
我认为你需要定义一个对象,然后推到数组。
var obj = {};
obj[foo] = 'bar';
ary.push(obj);
你最终希望完成什么?因为'el'是一个对象,所以如果你想把''一些奇怪的东西'与那个对象联系起来,为什么不直接给对象添加一个属性呢? – 2012-03-11 23:08:12
@amnotiam这是一个简单的例子。实际的用法是我需要一个els数组,所以它不会为它添加一个属性。 – 2012-03-11 23:51:05
如果你需要一个els数组,那不就是'var test = []; test.push(EL); // etc'? – nnnnnn 2012-03-12 00:39:16