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.

È stato utile?

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top