Как сделать объекты jQuery из массива? - PullRequest
2 голосов
/ 27 сентября 2011
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 () участвует.Я увлажняю навигационные селекторы, так как страницы добавляются / удаляются, мы просто обновляем массив.Мы могли бы построить массив из узлов nav, но в любом случае нам все еще нужно сделать эти селекторы с именами ...

Ответы [ 3 ]

4 голосов
/ 27 сентября 2011

Вы должны будете использовать скобочные обозначения:

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">]; 
2 голосов
/ 27 сентября 2011

Я не уверен, что вы пытаетесь выполнить, но

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

может сработать.

Свойства объекта всегда доступны с помощью скобочных обозначений.Это означает, что obj.xy - это то же самое, что и obj['xy'], но последний более гибкий и может использоваться в ситуациях, подобных вашей.

0 голосов
/ 27 сентября 2011
var anArray = ['thing1','thing2','thing3'];
var name    = {space:new Array()};

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