2009-12-13 2 views
2

У меня есть объект options: options = {title : 'title1', name : 'name1', url : 'url1', etc.}

, который передается в качестве параметра функции. Я пытаюсь перебрать этот объект, передать его через другую функцию evaluate, и сохранить результат в другом объекте opts, например, так:

var opts = new Object(); 

$.each(options, function(key,value){ 
opts.key = evaluate(element, value); 
}); 

evaluate(element,value) работает нормально, но проблема заключается в том, что opts заканчивает тем, как:

{key : eval(element,url1)} 

вместо

{title : eval(element,title1), name : eval(element,name1), etc.} 

То есть, key будет послана горит вместо того, чтобы оцениваться, и перезаписывается каждой итерацией с последним свойством в options.

Есть ли у меня правильный синтаксис в моей строке назначения? Я также пробовал:

opts = {key : eval(element,val)} 

, который дал тот же результат, что и выше. Я также могу преобразовать объект в массив в итерации $.each. Я пробовал несколько способов сделать это, также безуспешно. Если кто-то может показать мне этот маршрут, это тоже будет здорово.

(Это для плагина jQuery, и я тестирую Firebug в Firefox).

Заранее за вашу помощь.

ответ

8

Как вы обнаружили, что это ключ 'ключ' буквальным:

opts.key = evaluate(element, value); 

Чтобы использовать динамический ключ использование []:

opts[key] = evaluate(element, value); 

Конкретный пример:

var o = {}; 
o["test"] = "foo"; 
alert(o.test); 
+0

Спасибо так много, это то, что мне нужно! – pthesis

 Смежные вопросы

  • Нет связанных вопросов^_^