Вы можете использовать шаблонный литерал, если используете браузер, поддерживаемый ES6.
ES6
let info = [{
"details": "this a text for examples",
"link": "www.google.com",
"image": "download.jpg"
}, {
"details": "this a text for",
"link": "www.google.com",
"image": "download.jpg"
}];
$(() => {
$('.wrapper').append(info.map(renderContent));
});
function renderContent(data) {
return `
<div class="center">
<div class="column middle">
<p id="text">${data.details}</p>
<a href="${data.link}" id="link">More</a></div>
<div class="column side">
<img class="image" id="image" src="${data.image}">
</div>
</div>
`;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="wrapper"></div>
ES5 или ниже
Если вы используете ES5 или ниже, вы можете использовать библиотеку, такую как handlebars .
var info = [{
"details": "this a text for examples",
"link": "www.google.com",
"image": "download.jpg"
}, {
"details": "this a text for",
"link": "www.google.com",
"image": "download.jpg"
}];
$(document).ready(function() {
var template = Handlebars.compile($("#entry-template").html());
$('.wrapper').append(info.map(v => template(v)));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.4.2/handlebars.min.js"></script>
<div class="wrapper"></div>
<script id="entry-template" type="text/x-handlebars-template">
<div class="center">
<div class="column middle">
<p id="text">{{details}}</p>
<a href="{{link}}" id="link">More</a></div>
<div class="column side">
<img class="image" id="image" src="{{image}}">
</div>
</div>
</script>
Или вы можете встроить шаблон в цикл for.
var info = [{
"details": "this a text for examples",
"link": "www.google.com",
"image": "download.jpg"
}, {
"details": "this a text for",
"link": "www.google.com",
"image": "download.jpg"
}];
$(document).ready(function() {
var template = Handlebars.compile($("#entry-template").html());
$('body').append(template(info));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.4.2/handlebars.min.js"></script>
<script id="entry-template" type="text/x-handlebars-template">
<div class="wrapper">
{{#each .}}
<div class="center">
<div class="column middle">
<p id="text">{{details}}</p>
<a href="{{link}}" id="link">More</a></div>
<div class="column side">
<img class="image" id="image" src="{{image}}">
</div>
</div>
{{/each}}
</div>
</script>
Только функциональный jQuery
Имейте в виду, я не советую присваивать один и тот же идентификатор нескольким элементам. Это очень важное правило в DOM / HTML / XML.
var info = [{
"details": "this a text for examples",
"link": "www.google.com",
"image": "download.jpg"
}, {
"details": "this a text for",
"link": "www.google.com",
"image": "download.jpg"
}];
$(document).ready(function() {
$('.wrapper').append(info.map(v => renderContent(v)));
});
function renderContent(data) {
return $('<div>').addClass('center')
.append($('<div>').addClass('column middle')
.append($('<p>').attr('id', 'text').text(data.details))
.append($('<a>').attr('id', 'link').attr('href', data.link).text('More')))
.append($('<div>').addClass('column side')
.append($('<img>').addClass('id').attr('id', 'image').attr('src', data.image)));
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="wrapper"></div>