jQuery iterare sopra oggetto con $ .each
Domanda
Ho un options
oggetto: options = {title : 'title1', name : 'name1', url : 'url1', etc.}
che viene passato come parametro a una funzione. Sto cercando di iterare quell'oggetto, farlo passare attraverso un'altra funzione evaluate
, e memorizzare il risultato in un altro opts
oggetto, in questo modo:
var opts = new Object();
$.each(options, function(key,value){
opts.key = evaluate(element, value);
});
Il evaluate(element,value)
funziona bene, ma il problema è che opts
finisce per assomigliare:
{key : eval(element,url1)}
anziché
{title : eval(element,title1), name : eval(element,name1), etc.}
Cioè, key
viene passato letteralmente invece di essere valutati, e viene sovrascritto con ogni iterazione con l'ultima proprietà in options
.
Devo la sintassi giusta nella mia linea incarico? Ho anche provato:
opts = {key : eval(element,val)}
che ha dato lo stesso risultato di cui sopra. Posso anche convertire l'oggetto in una matrice all'interno della iterazione $.each
. Ho provato diversi modi di fare che, anche senza successo. Se qualcuno mi può mostrare questa strada, che sarebbe troppo grande.
(Questo è per un plugin jQuery, e sto test con Firebug in Firefox).
Grazie in anticipo per il vostro aiuto.
Soluzione
Come hai scoperto questa è la 'chiave' chiave letterale:
opts.key = evaluate(element, value);
Per usare una dinamica uso []
chiave:
opts[key] = evaluate(element, value);
Esempio specifico:
var o = {};
o["test"] = "foo";
alert(o.test);