Задать вопрос
Tizi
@Tizi
гуру программист ( no )

Как урезать длину символов в нескольких блоках?

Хочу урезать длину текста в див посредством jq
Вот чего добился я:

<div class="text_size">1234567</div>
<div class="text_size">7654321</div>

var size = 4,
    newsContent= $('.text_size'),
    newsText = newsContent.text();

  if(newsText.length > size){
    newsContent.text(newsText.slice(0, size) + ' ...');
  }

Но он вставляет текст, который был получен из первого дива. Я понимаю, что скрипт делает то что и попросил у него. Я просто не понимаю, как сделать так, чтобы он применялся именно к тексту в текущем диве и не вставлял первый во все.
  • Вопрос задан
  • 101 просмотр
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript + ИИ
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию
    6 месяцев
    Далее
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Где и на сколько надо ограничить длину текстового содержимого:

const selector = '.text_size';
const maxlen = 3;

Параметром метода text может быть не только строка, но и функция, которая вызывается для каждого элемента набора, принимает текущее текстовое содержимое элемента и возвращает новое:

$(selector).text((i, text) => {
  return text.length > maxlen ? text.slice(0, maxlen) + '...' : text;
});

А вообще, можно и отказаться от jquery:

const reg = RegExp(`(.{${maxlen}}).+`);

for (const n of document.querySelectorAll(selector)) {
  n.textContent = n.textContent.replace(reg, '$1...');
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы