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

Но он вставляет текст, который был получен из первого дива. Я понимаю, что скрипт делает то что и попросил у него. Я просто не понимаю, как сделать так, чтобы он применялся именно к тексту в текущем диве и не вставлял первый во все.
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Параметром метода text может быть не только строка, но и функция, которая вызывается для каждого элемента набора, принимает текущее текстовое содержимое элемента и возвращает новое:

const MAX = 3;

$('.text_size').text((i, text) => {
  return text.length > MAX ? `${text.slice(0, MAX)}...` : text;
});

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

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

document.querySelectorAll('.text_size').forEach(n => {
  n.innerText = n.innerText.replace(reg, '$1...');
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы