Разделы jquery.dotdotdot не отображаются
Я создаю ссылки "читать больше / меньше" для разделов текста, используя jquery.dotdotdot. Текст не отображается для разделов, где у меня есть несколько тегов p. Не совсем уверен, в чем проблема. Я включил свой код в скрипку ниже.
Я ценю любую помощь! Спасибо!
$(function () {
var addLink = $('.securetext');
addLink.append('<span class="readmore trigger-js"> <a >Read more</a></span>');
for (i = 0; i < addLink.length; i++) {
if ($(addLink[i]).children("p").length > 0) {
$(addLink[i]).children("p").last().append('<span class="readless trigger-js"> <a >Read less</a></span>');
} else {
$(addLink[i]).append('<span class="readless trigger-js"> <a >Read less</a></span>');
}
}
truncateIfNeeded(); // Initialize ellipsis
});
var truncateIfNeeded = function (jqueryTag) {
var $selectionToTruncate = jqueryTag || $('.securetext');
$selectionToTruncate.dotdotdot({
ellipsis: '... ',
watch: true,
//wrap : 'letter',
height: 20 * 3, // max number of lines
after: '.readmore',
callback: function (isTruncated, orgContent) {
var $currentReadMore = $(this).find('.readmore');
var $currentReadLess = $(this).find('.readless');
if (isTruncated) {
$(this).addClass('securetext--is-truncated');
$(this).removeClass('securetext--is-not-truncated');
}
bindReadMore(); // bind click on "read more"
}
});
};
1 ответ
Проблема в алгоритме, используемом для усечения.
На первой итерации Read More...
ссылка добавляется после абзаца (длина которого составляет ровно 3 строки). Это означает, что логика усечения вызывается.
Во второй итерации Read More...
добавляется внутри абзаца. Затем все это помещается в 3 строки, и поэтому оно удаляется. Это явно ошибка.
Проблема, описывающая ошибку на GitHub, была закрыта как wontfix.
Этот запрос извлечения обеспечивает частичное исправление, но не отображает многоточие в случае усечения элемента между абзацами. (Тем не менее, ссылка для чтения будет отображаться.)