2009-12-13 5 views
2

$ J'ai un objet options: options = {title : 'title1', name : 'name1', url : 'url1', etc.}jQuery itérer sur l'objet avec .each

qui est passé en paramètre à une fonction. Je suis en train de itérer sur cet objet, passer par une autre fonction evaluate, et stocker le résultat dans un autre objet opts, comme ceci:

var opts = new Object(); 

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

Le evaluate(element,value) fonctionne très bien, mais le problème est que opts finit par la recherche comme:

{key : eval(element,url1)} 

au lieu de

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

C'est key est transmis allumé au lieu d'être évalué, il est écrasé à chaque itération avec la dernière propriété dans options. Est-ce que j'ai la bonne syntaxe dans ma ligne d'affectation? J'ai également essayé:

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

qui a donné le même résultat que ci-dessus. Je peux également convertir l'objet en un tableau dans l'itération $.each. J'ai essayé plusieurs façons de le faire, également sans succès. Si quelqu'un peut me montrer cette route, ce serait génial aussi.

(Ceci est pour un plugin jQuery, et je suis en train de tester Firebug dans Firefox).

Merci d'avance pour votre aide.

Répondre

8

Comme vous l'avez découvert c'est la 'clé' clé littérale:

opts.key = evaluate(element, value); 

Pour utiliser une utilisation dynamique des clés []:

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

exemple spécifique:

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

Merci tellement, c'est juste ce dont j'avais besoin! – pthesis