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) + ' ...');
  }

Но он вставляет текст, который был получен из первого дива. Я понимаю, что скрипт делает то что и попросил у него. Я просто не понимаю, как сделать так, чтобы он применялся именно к тексту в текущем диве и не вставлял первый во все.
  • Вопрос задан
  • 76 просмотров
Решения вопроса 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...');
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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