如何设置动态生成的下拉列表或多个 select 的值?

How to set value of drop down list or multiple select that was generated dynamically?

这里的问题陈述是我有一个 select 列表,在 JSON 来自服务器的数据的帮助下,车把正在填充该列表,如 data_option 变量所示,然后服务器存储在数据变量中还有其他响应,这是要为 select 列表设置的实际数据。 因为我在编译数据时已经指定了值,但它仍然不是 select 的值,当我使用 Jquery 检索它时,它会抛出空值。

<div class="make">
    <script type="text/x-handlears-template" id="make">
        <select class="options" value="{{id}}">
            <option value="">--</option>
        </select>
    </script>
</div>

<script type="text/x-handlears-template" id="options">
    {{#each option}}
        <option value="{{id}}">{{name}}</option>
    {{/each}}
</script>
<script type="text/javascript">
var data = {"id": 3};
var data_options = {
    "option":[
        {
            "id": 1,
            "name": "John Doe"
        },
        {
            "id": 2,
            "name": "James Don"
        },
        {
            "id": 3,
            "name": "John Don"
        },
        {
            "id": 4,
            "name": "James Doe"
        }
    ]
}
var source = $('#make').html();
var template = Handlebars.compile(source);
$('.make').append(template(data));
var source2 = $('#options').html();
var template2 = Handlebars.compile(source2);
$('.options').append(template2(data_options));
</script>

您必须 set the selected attribute 您希望 select 的选项。

例如,您可以修改数据以设置指示 select离子状态的标志:

var i, opt;
for (var i=data_options.option.length-1; i>=0; i--) {
    opt = data_options.option[i];
    if (opt.id === data.id) {
        opt.selected = true;
        break;
    }
}

var source2 = $('#options').html();
var template2 = Handlebars.compile(source2);
$('.options').append(template2(data_options));

并相应地在模板中使用 {{#if selected}} ... {{/if}}

<script type="text/x-handlears-template" id="options">
    {{#each option}}
        {{#if selected}}
            <option value="{{id}}" selected="selected">{{name}}</option>
        {{else}}
            <option value="{{id}}">{{name}}</option>
        {{/if}}
    {{/each}}
</script>

http://jsfiddle.net/nikoshr/p588kp0L/