Сначала вы должны немного изменить свой json, чтобы у вас было одинаковое свойство title для всех элементов:
{
"articles": [{ "title": "title 1" }, { "title": "title 2" }, ... ]
}
Затем при обратном вызове функции .getJSON () просмотрите все вашиэлементы и генерировать html-разметку со значениями заголовка.
Я думаю, что наиболее эффективный способ применения разметки - это создать массив строк, представляющих желаемую разметку, и добавить все сразу.Цикл for
также будет более эффективным по сравнению с jquery .each () или .map ().
$.getJSON("data_prod.js", function(data) {
var titles = [];
for (var i=0; i<data.articles.length;i++) {
titles.push("<div>" + data.articles[i].title + "</div>");
}
$(titles.join('')).appendTo("#tt_mn");
});
ПРИМЕР
Редактировать:
Поэтому, если вы хотите отобразить один конкретный заголовок одним нажатием кнопки, вы можете добавить атрибут «data-», указывающий, какую статью вы хотите получить.заголовок:
<button data-articleidx="1">Get title</button>
А затем:
$('button').click(function(e) {
// get the index of the article for which the title should be obtained
var idx = $(this).data('articleidx');
$.getJSON("data_prod.js", function(data) {
// be safe and the data parameter conformity prior to extracting the title
if (data && data.articles && idx < data.articles.length) {
$("<div>" + data.articles[idx].title + "</div>").appendTo("#tt_mn");
}
});
});
Я все же предлагаю вам изменить json, чтобы иметь одинаковое имя свойства для заголовков.Я не могу придумать причину, почему они на самом деле "title1", "title2" ...