отображение данных Json и добавление данных к атрибуту

0

У меня есть трудности с отображением моих данных 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;   
    }
  • 0
    что делает console.log (ключи); шоу..?
  • 0
    is 33 раза Array [33] и в каждом из этих 33 ключей вот так: 0: "p0E2bVUfq3zIRuUO9zY8X5ZbwAM"
Теги:

4 ответа

1
Лучший ответ
names.forEach(function(name,index) {
  var div = document.createElement('div');
  div.innerHTML = name;
  $(div).addClass("name");
  $(div).data("key") = keys[index];
});

Вам нужно удалить кавычки в селекторе $()!

  • 0
    Uncaught ReferenceError: я не определен
  • 0
    @lipenco вам нужен цикл вокруг индекса! Смысл в том, чтобы удалить кавычки и использовать $(div) вместо $('div')
Показать ещё 2 комментария
0

предпочтительным методом является только однократное добавление к 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

0

попробуй что-нибудь вроде этого

 $('.name').data('key') //will give you sth
0

В соответствии с вашим комментарием, можно попробовать:

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++;
});
  • 0
    $ (div) .data ("key") = keys [i]; - У меня ошибка: неверная левая сторона назначения
  • 0
    @lipenco посмотрите мой обновленный ответ .. сделайте это :: $ ('div'). data ("key", keys [i]); вместо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню