如何用循环 each () 显示 json div class
how to display the json div class with the loop each ()
我正在尝试显示 return json 一个部分,但显示全部在同一部分 div
<section>
<div class="conteudo">
<div class="foto"> FOTO </div>
<div class="inf"> TITULO </div>
<div class="inf"> DESCRICAO </div>
<div class="inf"> PRECO </div>
</div>
<div class="conteudo">
<div class="foto"> FOTO </div>
<div class="inf"> TITULO </div>
<div class="inf"> DESCRICAO </div>
<div class="inf"> PRECO </div>
我试试:
$.ajax({
type: 'GET',
url: "categoria/"+id,
contentType: "charset=utf-8",
}).done(function(output){
json = $.parseJSON(output);
$('.conteudo').empty();
$.each(json, function(i, items){
$('.conteudo').append(
items.fields['imagem'],
items.fields['nome_produto'],
items.fields['descricao'],
items.fields['preco_produto']
);
});
});
尝试使用 (.html .appedTo addClass .append) 但没有任何结果
您需要使用现有的 .conteudo
div 作为模板,克隆 div 并将 div 中每个字段中的文本替换为数据:
// take a copy of an existing one as a template
$.each(json, function (i, items) {
var clone = $('.conteudo:first').clone();
clone.find('.foto').text(items.fields['imagem']);
clone.find('.inf:eq(0)').text(items.fields['nome_produto']);
clone.find('.inf:eq(1)').text(items.fields['descricao']);
clone.find('.inf:eq(2)').text(items.fields['preco_produto']);
$('section').append(clone);
});
我用 JSON 字面上创建的示例对象为您制作了一个模型:http://jsfiddle.net/TrueBlueAussie/q44mym2d/1/
已更新为使用简单模板
由于您有清除该部分所有当前项目的要求,我建议使用模板系统。我最喜欢的是简单地使用一个虚拟脚本块来包含空模板 HTML:
例如
<script id="template" type="text/template">
<div class="conteudo">
<div class="foto"></div>
<div class="inf"></div>
<div class="inf"></div>
<div class="inf"></div>
</div>
</script>
type="text/template"
是未知类型,因此所有浏览器都会忽略它。
代码然后使用该元素中的 HTML 和 html()
。
例如我刚改了这一行
var clone = $($('#template').html());
已更新 JSFiddle: http://jsfiddle.net/TrueBlueAussie/q44mym2d/2/
这意味着您可以销毁所有现有项目而不用担心,因为模板是独立的(并且可以很好地编辑)。
我正在尝试显示 return json 一个部分,但显示全部在同一部分 div
<section>
<div class="conteudo">
<div class="foto"> FOTO </div>
<div class="inf"> TITULO </div>
<div class="inf"> DESCRICAO </div>
<div class="inf"> PRECO </div>
</div>
<div class="conteudo">
<div class="foto"> FOTO </div>
<div class="inf"> TITULO </div>
<div class="inf"> DESCRICAO </div>
<div class="inf"> PRECO </div>
我试试:
$.ajax({
type: 'GET',
url: "categoria/"+id,
contentType: "charset=utf-8",
}).done(function(output){
json = $.parseJSON(output);
$('.conteudo').empty();
$.each(json, function(i, items){
$('.conteudo').append(
items.fields['imagem'],
items.fields['nome_produto'],
items.fields['descricao'],
items.fields['preco_produto']
);
});
});
尝试使用 (.html .appedTo addClass .append) 但没有任何结果
您需要使用现有的 .conteudo
div 作为模板,克隆 div 并将 div 中每个字段中的文本替换为数据:
// take a copy of an existing one as a template
$.each(json, function (i, items) {
var clone = $('.conteudo:first').clone();
clone.find('.foto').text(items.fields['imagem']);
clone.find('.inf:eq(0)').text(items.fields['nome_produto']);
clone.find('.inf:eq(1)').text(items.fields['descricao']);
clone.find('.inf:eq(2)').text(items.fields['preco_produto']);
$('section').append(clone);
});
我用 JSON 字面上创建的示例对象为您制作了一个模型:http://jsfiddle.net/TrueBlueAussie/q44mym2d/1/
已更新为使用简单模板
由于您有清除该部分所有当前项目的要求,我建议使用模板系统。我最喜欢的是简单地使用一个虚拟脚本块来包含空模板 HTML:
例如
<script id="template" type="text/template">
<div class="conteudo">
<div class="foto"></div>
<div class="inf"></div>
<div class="inf"></div>
<div class="inf"></div>
</div>
</script>
type="text/template"
是未知类型,因此所有浏览器都会忽略它。
代码然后使用该元素中的 HTML 和 html()
。
例如我刚改了这一行
var clone = $($('#template').html());
已更新 JSFiddle: http://jsfiddle.net/TrueBlueAussie/q44mym2d/2/
这意味着您可以销毁所有现有项目而不用担心,因为模板是独立的(并且可以很好地编辑)。