将JSON数据附加到不同的元素

时间:2014-04-29 19:48:45

标签: javascript jquery json

我需要使用switch语句根据检索到的feed构建标记。虽然我能够检索数据,但我想知道使用两个$(data.value.items).each(function (index, item) {将Feed的标题附加到选择框以及无序列表是否正确。做同样事情的更好方法是什么?

$.ajax({
    url: "http://www.zzz.com/text.json",
    dataType: 'json',
    success: function (data) {
      item_html = parseData(feedformat, data)
      var nextarea = $this.next('.area');
      nextarea.append(item_html).slideDown();
    },
    error: function () { 
      area.html('fail'); }
});

function parseData(type, data) {
    var item_html ='';
    switch(type) {
        case 'thisfeed':
            item_html +='<select>';

            $(data.value.items).each(function (index, item) { 
                item_html += '<option>'+item.title+'</option>'; 
            });

            item_html += '</select>';
            item_html += '<ul>';

            $(data.value.items).each(function (index, item) {
                item_html += '<li>'+item.title+'</li>
            });

            item_html += '</ul>';
            break;
       }
     return item_html;   
    }

1 个答案:

答案 0 :(得分:2)

您可以在同一个循环中执行这两个操作,就像这样

$.ajax({
    url      : 'http://www.zzz.com/text.json',
    dataType : 'json',
    success  : function (data) {
        var item_html = parseData(feedformat, data)
        var nextarea  = $this.next('.area');
        nextarea.append(item_html).slideDown();
    },
    error: function () { 
        area.html('fail'); 
    }
});

function parseData(type, data) {
    switch(type) {
        case 'thisfeed':
            var select = $('<select />'),
                ul     = $('<ul />');

            $(data.value.items).each(function (index, item) { 
                var option = $('<option />', {text : item.title}),
                    li     = $('<li />', {text : '.......'});

                select.append(option);
                ul.append(li);
            });
       }
    }
    return select.add(ul);
}