У меня есть данные из 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, это будет оценено. Заранее спасибо.

Вместо того, чтобы хранить данные в атрибуте «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