在我的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>')
但它不起作用。
答案 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