Я не верю, что CSS-решение, упомянутое @spudley, является кросс-браузерным (без поддержки Firefox). Предполагая, что вы заботитесь об этом, конечно. Первая ссылка, которую он предоставляет, даже указывает на ограниченную поддержку в верхнем правом углу страницы.
Теперь, сказав, что у меня есть хорошая маленькая функция, которая может быть излишней для того, что вам нужно, но я обнаружил, что регулярно использую ее в подобных ситуациях. Код ниже прокомментирован, но он вставляет многоточие только после последнего полного слова на основе установленного предела.
Таким образом, вы можете вернуть «Собака прыгает ...» вместо «Собака прыгает ов ...»
// ==============================================================================================
// Truncate a string to the given length, breaking at word boundaries and adding an elipsis
// @param str - String to be truncated
// @param limit - integer Max length of the string
// @returns a string
// ==============================================================================================
function truncate(str, limit) {
var chars;
var i;
// check if what was passed as a string is actually a string
if ( typeof(str) != 'string') {
return '';
}
// create an array of the chars in the string
chars = str.split('');
// if the length is greater than the set limit, process for truncating
if (chars.length > limit) {
// while the char count is greater than the limit,
for (i = chars.length - 1; i > -1; --i) {
// if char count is still greater, redefine the array size to the value of i
if (i > limit) {
chars.length = i;
}
// if char count is less than the limit keep going until you hit a space
// and redefine the array size to the value of i
else if (' ' === chars[i]) {
chars.length = i;
break;
}
}
// add elipsis to the end of the array
chars.push('...');
}
// return the array as a string
return chars.join('');
}