如何从数组中创建 jQuery 对象?

Posted

技术标签:

【中文标题】如何从数组中创建 jQuery 对象?【英文标题】:How to make jQuery objects from an array? 【发布时间】:2011-11-26 05:51:27 【问题描述】:
anArray = ['thing1','thing2','thing3'];
$.each(anArray, function (i,el) 
   var object = 'name.space.' + el;
   var selector = 'node-' + el;
   var object = $('#' + selector);//need object here to be interpreted as it's value
       //as if: var name.space.thing1 = $('#' + selector);
);

这些都是可用的 jQuery 对象:

console.log(name.space.thing1);
console.log(name.space.thing2);
console.log(name.space.thing3);

我觉得 eval() 参与其中。我正在为导航选择器补充水分,以便在添加/删除页面时,我们只需更新数组。我们可以从导航节点构建数组,但无论哪种方式,我们仍然需要能够制作这些命名空间选择器...

【问题讨论】:

你想完成什么?必须有更好的方法。 数字在 javascript 变量名的开头无效。所以你的格式不起作用。 我想要缓存 DOM 中导航节点的 jQuery 对象。更喜欢将这些对象的创建绑定到遍历数组或导航节点本身。 【参考方案1】:

你必须使用括号表示法:

var array = ['thing1', 'thing2'];
var object = ;
object.space = ;
$.each(array, function () 
    object.space[this] = $('#node-' + this);
);

console.log(object.space.thing1); // [<div id="node-1">]; 

【讨论】:

感觉这样和答案 bazmegakapa [给] 是一样的。无论哪种方式,我都无法选择答案。我选择哪个?让人们投票更多? 随意投票给任何一个,我想习惯上选择最旧的答案。不过没关系,两个都投。马克一回答。世界还在继续:) 是的,我猜这两种方式都不用担心:)。 感谢各位的帮助!我无法投票,因为我还没有足够的代表。我知道我知道。我在现实世界中并没有迟到,我来了。【参考方案2】:

我不确定你想要完成什么,但是

name.space[el] = $('#' + selector);

可能会起作用。

对象属性也始终可以使用括号表示法访问。这意味着obj.xyobj['xy']是一样的,但是后者更灵活,可以用在像你这样的情况。

【讨论】:

这似乎有效。不过,我不清楚 name.space[el] 以后如何作为 name.space.thing1 引用。那是哪里。来自(哪里?那是 [] 的一部分吗? @folktrash - name.space["thing1"] 相当于 JavaScript 中的 name.space.thing1。从el === "thing1" 开始,然后是name.space[el] === name.space["thing1"] === name.space.thing1【参考方案3】:
var anArray = ['thing1','thing2','thing3'];
var name    = space:new Array();

$.each(anArray, function (i,el) 
   var selector = 'node-' + el;
   name.space[el] = $('#' + selector);
);

【讨论】:

以上是关于如何从数组中创建 jQuery 对象?的主要内容,如果未能解决你的问题,请参考以下文章

遍历表并在 js/jquery 中创建一个数组

如何在 jquery 中创建二维关联数组?

在 JQuery 中创建 JSON 对象的 JSON 数组

在 python 中创建切片对象

如何从 DOM 元素和选择器的混合中创建 JQuery 容器

从对象数组中创建一个新对象[重复]