El atributo val
no funciona, porque un <select>
toma su valor a partir de los <option>
s que tienen el atributo selected
. No estoy muy familiarizado con el bigote, pero esto debe trabajo:
// snip...
var html = Mustache.to_html(template, data);
$(html)
.find('option[value=3]').attr('selected', true)
.end().appendTo('body');
creo que la plantilla que está utilizando no es idiomático bigote — de que sea demasiado grano grueso; en realidad no eres plantilla cualquier cosa. Algo como esto podría ser más bigote-Y:
var template = '<select>{{#options}}' +
'<option value="{{val}}" {{#sel}}selected{{/sel}}>' +
'{{txt}}' +
'</option>' +
'{{/options}}</select>',
data = {options: [
{val: 1, txt: 'uno'},
{val: 2, txt: 'dos'},
{val: 3, txt: 'tres', sel: true}
]};
var html = Mustache.to_html(template, data);
$(html).appendTo('body');
Demo →
¡Gracias! No estaba seguro de si ese era el enfoque correcto. – nolabel
No hay problema. TBH, ese es el primer código de Moustache que he escrito ... pero escribo un montón de JSP ;-) –
¿Funciona esto solo con la matriz JSON? Etc. '" options ": [" val1 "," val2 "]' – zygimantus