nol*_*bel 22 javascript jquery templates mustache
是否可以使用Mustache.js执行此操作?
var data = {"val":"3"},
template = '<select>' +
'<option value="1">1</option>' +
'<option value="2">2</option>' +
'<option value="3">3</option>' +
'</select>';
var html = Mustache.to_html(template, data);
$(html).appendTo('body');
Run Code Online (Sandbox Code Playgroud)
Mat*_*all 34
该val
属性不起作用,因为a <select>
从<option>
具有该selected
属性的s 获取其值.我对胡子不是很熟悉,但这应该有效:
// snip...
var html = Mustache.to_html(template, data);
$(html)
.find('option[value=3]').attr('selected', true)
.end().appendTo('body');
Run Code Online (Sandbox Code Playgroud)
我认为你使用的模板不是惯用的胡子 - 它太粗糙了; 你实际上并没有模仿任何东西.像这样的东西可能是更多的胡子-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');
Run Code Online (Sandbox Code Playgroud)
小智 12
如果您之后不想修改数组或DOM树,可以使用以下函数:
var selval=3; // select 3
var template = '<select>{{#options}}' +
'<option value="{{val}}" {{selected}}>{{txt}}</option>' +
'{{/options}}</select>';
var data={
options: [
{val: 1, txt: 'one'},
{val: 2, txt: 'two'},
{val: 3, txt: 'three'}
],
selected: function() {
if (this.val==selval) return "selected";
return "";
}
};
var html = Mustache.to_html(template, data);
Run Code Online (Sandbox Code Playgroud)