Вы можете использовать jQuery .text()
, чтобы избежать циклов и добиться этого достаточно чисто.
function truncateText(selector, maxLength) {
$(selector).text((i, txt) => txt.length > maxLength ? txt.substr(0,maxLength) + "..." : txt);
};
truncateText(".hp-um-description", 100);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="hp-um-description">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris feugiat ipsum massa, et sagittis enim tempus id. Mauris nisl turpis, pellentesque scelerisque congue nec, faucibus vel arcu.</p>
<p class="hp-um-description"> Fusce id ultrices nibh. Suspendisse sit amet felis lobortis, rhoncus ex eu, fringilla lacus.</p>
<p class="hp-um-description">Suspendisse sit amet felis lobortis, rhoncus ex eu, fringilla lacus. Duis vehicula placerat sapien, ac consectetur dolor egestas eget.</p>
Приведенный выше код перебирает все элементы, удовлетворяемые селектором, и применяет функцию.Эта строка определяет, будет ли она усечена или нет:
txt.length > maxLength ? txt.substr(0,maxLength) + "..." : txt
//(If length exceeds maxlength) (truncate and add ...) (else) (leave the text as-is)
Если вы хотите иметь возможность также усекать string
значения , вы можете использоватькод ниже вместо:
String.prototype.truncate = function(maxLength) {
var t = this.toString();
return t.length > maxLength ? t.substr(0, maxLength) + "..." : t;
};
function truncateText(selector, maxLength) {
$(selector).text((i, txt) => txt.truncate(maxLength));
};
//Truncate an existing element's text
truncateText(".hp-um-description", 100);
//Truncate a string
console.log("This is a long string that exceeds 30 characters.".truncate(30));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="hp-um-description">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris feugiat ipsum massa, et sagittis enim tempus id. Mauris nisl turpis, pellentesque scelerisque congue nec, faucibus vel arcu.</p>
<p class="hp-um-description"> Fusce id ultrices nibh. Suspendisse sit amet felis lobortis, rhoncus ex eu, fringilla lacus.</p>
<p class="hp-um-description">Suspendisse sit amet felis lobortis, rhoncus ex eu, fringilla lacus. Duis vehicula placerat sapien, ac consectetur dolor egestas eget.</p>