Как динамически отображать данные JSON при нажатии из API?

У меня есть данные из Tumblr API, которые я успешно проанализировал, пока не представил tags в описании тела. (Это включает изображения, гиперссылки и т. д.)

По сути, я создаю список заголовков блогов. Описание блога отображается динамически в зависимости от того, по какому заголовку нажимают. Я чувствую, что этот код не работает из-за проблемы с цитатами, но я не знаю, как это обойти.

ЗДЕСЬ КОДЕПНИК демонстрирует проблему с полным кодом.

Это просто частичный посмотрите на ошибку:

      //...
      $.each(inner, function(i, obj) {

          title = inner[i].Title
          description = inner[i].Description

     // Source of the error
     // data-description includes an <a> tag that breaks the code
          $('<div class = "title-list" data-title = "<h3>' + title + '</h3>" data-description = "' + description  + '">' + title + '</div>').appendTo(monthblogList)

        })
      })
    });

    function showBlogEntry(element){
      var t = $(element).data('title')
      var ds = $(element).data('description')

      blogEntry.empty()

      $(t).appendTo(blogEntry)
      $(ds).appendTo(blogEntry)
    }
}

Опять же, я бы рекомендовал взглянуть на CODEPEN, чтобы лучше понять. Я включил тег a в первое сообщение в блоге, чтобы показать проблему. Здесь - оригинал сообщения в блоге.

Вот одно решение, о котором я подумал:

if ($(description).has("a")) {
  // do something
}

Но все еще не знаете, как решить эту проблему.

Мне нужно получить информацию из переменных title и description и показать данные при щелчке мышью в зависимости от того, какой заголовок нажимает пользователь. Это было одно из решений, хотя оно может быть не лучшим. Если есть другие решения, помимо тегов data, это будет оценено. Заранее спасибо.

Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
1
0
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо того, чтобы хранить данные в атрибуте «data-» HTMLDivElement, просто сохраните ссылку на ответ JSON от API в своем javascript и сохраните показатель или я бы в атрибуте «data-» (возможно, «data-post-id ")

var blogData = [{Title: .., Description: ...}, ...]; //Data from JSON Response

...
...

$('<div class = "title-list" data-post-id =' + postId +'>' + title + '</div>').appendTo(monthblogList);

...
...    

function showBlogEntry(element){
      var id = $(element).data('post-id')
      var close = $('<span id = close> x </span>')

      blogEntry.empty()

      $(close).appendTo(blogEntry)
      $('<h3>' + blogData[id].Title + '</h3>').appendTo(blogEntry)
      $(blogData[id].Description).appendTo(blogEntry)

      $("#close").on("click", function (event) {
        blogEntry.empty()
        about.fadeIn()
      });
    }

Логика этого имеет смысл, но когда я применяю ее, она все еще немного глючит. Возможно, я неправильно определяю postId, не могли бы вы объяснить это немного подробнее? Или, возможно, демонстрация на codepen / jfiddle? Обновлено: переменная jData в моем CodePen считается blogData

miranda 28.08.2018 05:39
codepen.io/jmdejno/pen/MqeymL. Я добавил 'var postData' в начало файла JS, а затем кэшировал значение для последующего использования в 'showBlogEntry', поместив идентификатор (или, в данном случае, индекс массива) в 'data-post-id
Jeremy Dejno 28.08.2018 06:05

Спасибо! После ознакомления с этим становится гораздо больше смысла. Престижность

miranda 28.08.2018 06:18

Другие вопросы по теме