У меня есть трудности с отображением моих данных Json. Я хотел бы добавить данные attr для каждого div с классом.name. Так как результат такой:
<div class="name" data-key="sth"> sty</div>
Ключ можно получить так: ['streme'].
вот моя багги JS:
function getExistingLinks() {
$.post( "http://0.0.0.0:9292/api/links", function( data ) {
var names = data.map(function (i) {
return i['link'].name
});
var keys = data.map(function (i) {
return i['link'].key
});
var container = document.querySelector(".link-names");
names.forEach(function(name) {
var div = document.createElement('div');
div.innerHTML = name;
$('div').addClass("name");
// $('div').each( function(index) {
$('div')[index].data("key") = keys[index];
}
container.appendChild(div);
});
});
return false;
}
names.forEach(function(name,index) {
var div = document.createElement('div');
div.innerHTML = name;
$(div).addClass("name");
$(div).data("key") = keys[index];
});
Вам нужно удалить кавычки в селекторе $()!
$(div)
вместо $('div')
предпочтительным методом является только однократное добавление к DOM, поскольку добавление к DOM приведет к перерисовке каждого из них.
psuedo-код как не уверен, что имя представляет в вашем innerHTML:
var divs = []; for (var i, len = names.length; я <len; i++) {divs.push($ ('' + name + ''). data ("ключ", клавиши [i])); } }
$ Container.append (дивы);
http://codepen.io/jsdev/pen/2866265243563efd79cf05a5b12202b3
попробуй что-нибудь вроде этого
$('.name').data('key') //will give you sth
В соответствии с вашим комментарием, можно попробовать:
var i = 0;
names.forEach(function(name) {
var div = document.createElement('div');
div.innerHTML = name;
$('div').addClass("name");
$('div').data("key", keys[i]);
container.appendChild(div);
i++;
});