В настоящее время у меня есть фрагмент jQuery, который успешно обрезает мой текст, когда дочерняя строка больше, чем родительский контейнер (см. Ниже).Проблема многострочного усечения текста
var initial = $('.js-text').text();
$('.js-text').text(initial);
while($('.js-text').outerHeight() > $('.js-text-truncator').height()) {
$('.js-text').text(function(index, text) {
return text.replace(/\W*\s(\S)*$/, '...');
});
}
Я использовал семантику у меня есть, как я планировал использовать этот небольшой компонент JQuery в более чем одном месте в существующей разметке так:
<div class="existing-first-div-container js-text-truncator">
<p class="existing-first-string js-text">The quick brown fox</p>
</div>
<div class="existing-second-div-container js-text-truncator">
<p class="existing-second-string js-text"> jumped over the lazy red dog.</p>
</div>
Kudos, если вы дочитали до этого и уже догадался о моей проблеме btw ...
Так что проблема в том, что мой jQuery хранит текст, но он хранит весь текст. Таким образом, оба этих существующих divs усекаются, но оба заканчивают чтение: «Быстрая коричневая лиса перепрыгнула через ленивую красную собаку». а не в первом чтении «Быстрая коричневая лиса» и во втором чтении «перепрыгнул через ленивую красную собаку».
Возможно ли использовать мой js-text-truncator в качестве расширения моей разметки так, как я предполагаю, без сохранения всех усеченных текстовых экземпляров сразу?
Спасибо, это усекает два. Я, возможно, не дал достаточно подробностей, хотя ... Это не сохраняет и не добавляет/удаляет текст при настройке окна браузера: http://jsfiddle.net/ts7bs9q3/ – danMad
Если вы хотите его изменить размер окна, вы можете просто привяжите одну и ту же функцию к .resize :) Дайте мне мгновение, чтобы добавить ее в ответ. –
Привет, Ваше первое решение успешно обрезало текст на лету без задержки 400 мс. Но он по-прежнему не добавляет текст обратно, если вы измените размер браузера больше. Я подозреваю, что это потому, что мы не храним каждый текст изначально? Я постараюсь ответить на ваш вопрос, поскольку вы технически ответили на мой вопрос. Но если у вас есть какие-то идеи, которые были бы замечательными;) – danMad