使用jQuery元素对象作为数组键?

时间:2012-03-11 23:04:11

标签: javascript jquery

是否可以将jQuery元素对象用作数组/对象键?

示例:

var el = jQuery(this);
var test = {};
test[el] = "something strange";

做一个:

jQuery.each(test, function(k,v){
    console.log(k);
});

只报告[object Object]

有没有说我可以重新使用k作为原始jQuery元素对象?

4 个答案:

答案 0 :(得分:7)

不,这是不可能的。

ECMAscript仅允许strings作为对象的键值。


您可以做的是改为使用单个节点中的id value。所以它可能看起来像

var el = jQuery(this);
var test = {};
test[this.id] = "something strange";

当然要求节点具有id值。

答案 1 :(得分:0)

使用$.each([],function(i,v)){}时,i是索引,v是值。

答案 2 :(得分:0)

当您尝试将对象指定为数组键时,您会看到对象已转换为字符串('[object Object]')。对于简单的哈希,您可以将它们序列化为一个键:

var obj = { foo: 'bar' },
    key = JSON.stringify(obj),
    obj2 = { key: 'something strange' };

但一般来说,你会想避免这种事情。您可以使用包含对象和消息的并行数组:

var keys = [ {foo: 'bar'}],
    values = [ 'something strange' ];

答案 3 :(得分:-1)

我认为你需要定义一个对象,然后推送到数组。

var obj = {};
obj[foo] = 'bar';
ary.push(obj);