Включите этот (плагин) в тег script
или ссылку из внешнего файла .js через некоторое время после загрузки jQuery:
(function($) {
$.fn.trimFluff = function(options) {
var settings = $.extend({
'childSelector': '#spanid',
'maxLength': 140
}, options);
return this.each(function() {
var container = $(this);
var child = $(settings.childSelector);
var containerLen = container.text().length;
var childLen = child.text().length;
var fluffToTrim = containerLen - settings.maxLength;
if (containerLen > settings.maxLength) {
if (fluffToTrim > childLen) { //'fluffToTrim' is larger than the child contents...
$(this).find(settings.childSelector).remove(); //remove child
containerLen = container.text().length; //recalc new length
fluffToTrim = containerLen - settings.maxLength; //recalc 'fluffToTrim'
if (containerLen > settings.maxLength) {
//remove "offending length" characters + 3 for the ellipsis and replace with the ellipsis
container.text(container.text().substring(0, containerLen - fluffToTrim + 3) + '...');
//string is now under (or equal to) 140 characters
}
} else {
//remove "offending length" characters + 3 for the ellipsis, from the child, and replace with the ellipsis
child.text(child.text().substring(0, childLen - fluffToTrim + 3) + '...');
}
}
});
};
}(jQuery));
Затем назовите его так:
$('#divid').trimFluff();
или передать объект опций.Есть два варианта: childSelector
, который принимает любой допустимый селектор jQuery (или элемент, или объект jQuery) и maxLength
(который, я надеюсь, не требует пояснений :)).
Примеры:
$('#divid').trimFluff({childSelector: 'span', maxLength: 150});
$('#divid').trimFluff({childSelector: $('#spanid'), maxLength: 140});
$('#divid').trimFluff({childSelector: 'span#spanid.customClass', maxLength: 160});
var s = document.getElementById('spanid');
$('divid').trimFluff({childSelector: s);
Это сначала обрезает дочерний элемент, сохраняя левую сторону, а если текст, который нужно вырезать, больше самого дочернего элемента, он полностью удаляет дочерний элемент и обрезает оставшееся содержимое div
(илидругой контейнер), пока текст не станет меньше, чем maxLength
.
. Это практически не проверяет ошибки, но будет работать с любым объектом jQuery, где функция text()
что-то делает.
Веселитесь вместе с ним.