选择包含json内容的框

时间:2014-01-02 17:07:15

标签: jquery json select

我正在从JSON文件构建一些Html。

问题是我需要用json文件中的内容填充选择框。我从论坛尝试了几个解决方案,但无法让它发挥作用。我认为它与附加内容有关,因为我还有不同的html正在构建。

我拥有的是:

$.getJSON(url, function (data){ 
........ etc
quickCartHtml += '<form id="variants" action=""><select id="options" name="option">';


var options = '';

  $.each(product.variants, function (index, variant) {

  options += '<option value="' + variant.id + '" />' + variant.title + '</option>';

  });  

$('#options').append(options);

quickCartHtml += '</select></form>';

当我使用console.log时,一切似乎都有效。因此,我认为我在附加到quickCartHtml时出错了。

有人提出建议吗?

4 个答案:

答案 0 :(得分:0)

尝试:

$('#options').html(options);

答案 1 :(得分:0)

您的问题是,当您调用追加时,<select>尚未构建,因此您需要继续添加变量然后附加整个内容:

$.getJSON(url, function (data) {........etc
    quickCartHtml += '<form id="variants" action=""><select id="options" name="option">';


    // unnecessary
    // var options = '';

    $.each(product.variants, function (index, variant) {

        quickCartHtml += '<option value="' + variant.id + '" />' + variant.title + '</option>';

    });

    // $('#options').append(options);

    quickCartHtml += '</select></form>';

    // now append quickCarthtml to a div or something
    $('div').append(quickCartHtml);

答案 2 :(得分:0)

你必须先添加quickCartHtml才能选择可以这样做的#options:

  

$( '#靶')附加(quickCartHtml);

此外,您必须将生成的选项附加到#options,如下所示:

  

$ options = $('#options');

     

$。each(product.variants,function(index,variant){

$options.append($('<option>', {value: variant.id, html: variant.title}));
     

}

答案 3 :(得分:0)

好的,我找到了问题的答案,所以我发布这个是为了帮助其他人:

$.getJSON(url, function (data){ 
........ etc


options = '';

  $.each(product.variants, function (index, variant) {

  options += '<option value="' + variant.id + '">' + variant.title + '</option>';

  });  

 quickCartHtml += '<form id="variants" action=""><select id="options" name="option">'+options+'</select>';