Новый ответ:
Я не знаю, будет ли это быстрее, но это работает.
function fitWidth(str) {
var width = $('span.width').css('display', 'inline').html(str).width();
var charWidth = Math.round(width / str.length);
var maxLength = 130 / charWidth;
$('span.width').html(str.substr(0, maxLength));
}
Старый ответ:
вместо того, чтобы делать это рекурсивно, почему бы вам просто не использовать substr (), чтобы сделать ширину 130.
вроде так:
function fitWidth(str) {
var width = $('span.width').html(str).width();
if(width > 130) {
return str.substr(0, 130);
} else {
return str;
}
}
EDIT:
о, теперь я вижу, что вы говорите о ширине против длины символов в строке. Тем не менее, если вы берете ширину используемого шрифта, я думаю, что вы все равно можете избежать нескольких шагов.