从列表中的列表中提取信息。

时间:2012-11-20 17:49:08

标签: javascript jquery

在我的js中,我得到一个类似的列表'数据':

data = {test: 'test', test2:'test2', test3 : buffer}

我的'缓冲区'有这样的形式:

buffer =[{testa: 'testa', testb : 'testb'}, {testc: 'testc', testd : 'testd'}, {teste: 'teste', testf : 'testf'} ... ]

我想要做的是缓冲区的每个元素,使用它包含的数据做这样的追加。

$('.try').append('<div> <p> '+testa+' </p> <p> '+testb+' </p> <div>')
$('.try').append('<div> <p> '+testc+' </p> <p> '+testd+' </p>)
...

HTML:

<div class='try' >

关于如何做到这一点的任何想法?

我知道我可以使用'data.buffer'访问'buffer'。但是,我需要为'buffer'的每个元素创建一个循环,然后为缓冲区的每个元素,提取其中的数据并创建一个新的div ...

非常欢迎任何帮助。

编辑: 这是我试过的:

    for (var i in data.buffer) $('.try').append('<div> <p> '+i.testa' </p> <p> '+i.testb' </p> </div>')

但它不起作用。

1 个答案:

答案 0 :(得分:2)

使用$.each迭代您的对象..

试试这个

var buffer=[{testa: 'testa', testb : 'testb'}, 
            {testc: 'testc', testd : 'testd'}, 
            {teste: 'teste', testf : 'testf'}]​;

var html = '';
$.each(buffer ,function(i, v){ // Iterate over the Array
    html += '<div>' ;
    $.each(v, function(j,value) { // Iterate over each object
        html += '<p> '+ value+' </p>' ;
    });   
    html += '</div>' ;        
});


$('.try').append(html);

<强> Check Fiddle

更新

对于您要问的第二种格式..删除最里面的$.each

var html = '';
$.each(buffer, function(i, v) { // Iterate over the Array
    html += '<div>';
    var k = 0;
    $.each(v, function(j, value) { // Iterate over each object
        if (k == 0) {
            html += '<p> ' + value + ' </p>';
        }
        else {
            html += '<img src="' + value +'" />';
        }
        k++;
    });
    html += '</div>';
});

$('.try').append(html);​

<强> Fiddle