Как я могу усечь строку в jQuery?


У меня длинные названия и я хочу усечь их, но таким образом, чтобы ни одно слово не ломалось, я имею в виду, что резка происходит между словами, не режущими слово.

Как я могу это сделать с помощью jquery?

5 57

5 ответов:

от: усечение текста jQuery (подробнее стиль)

попробуйте это:

var title = "This is your title";

var shortText = jQuery.trim(title).substring(0, 10)
    .split(" ").slice(0, -1).join(" ") + "...";

и вы также можете использовать плагин:

как расширение строки

String.prototype.trimToLength = function(m) {
  return (this.length > m) 
    ? jQuery.trim(this).substring(0, m).split(" ").slice(0, -1).join(" ") + "..."
    : this;
};

использовать как

"This is your title".trimToLength(10);

решение выше не будет работать, если исходная строка не имеет пробелов.

попробуйте это:

var title = "This is your title";
var shortText = jQuery.trim(title).substring(0, 10)
                          .trim(this) + "...";
  function truncateString(str, length) {
     return str.length > length ? str.substring(0, length - 3) + '...' : str
  }

вместо того, чтобы использовать jQuery, то используйте свойства CSS text-overflow:ellipsis. Он будет автоматически усекать строку.

.truncated { display:inline-block; 
             max-width:100px; 
             overflow:hidden; 
             text-overflow:ellipsis; 
             white-space:nowrap; 
           }

с прототипом и без пробела :

 String.prototype.trimToLength = function (trimLenght) {
    return this.length > trimLenght ? this.substring(0, trimLenght - 3) + '...' : this
};