Обрезать тест в теге <p> но не обрезать картинку в нём
Подскажите пожалуйста как обрезать текст в теге <p>, но не обрезать: картинку находящуюся в этом теге.
var size = 30,
newsContent= $('.gkTabsItem.active p'),
newsText = newsContent.text();
if(newsText.length > size){
newsContent.text(newsText.slice(0, size) + ' ...');
}
<div class="gkTabsItem active"> <p> <img src="pensioner-rabotaet-min.jpg">Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum </p> </div> |
ami_moor,
вариант ...
var size = 30,
newsContent = $(".gkTabsItem.active p"),
newsText = newsContent.text();
if (newsText.length > size) {
newsContent.contents().filter(function() {
return this.nodeType == 3
}).remove();
newsContent.append(newsText.slice(0, size) + " ...")
}
|
$(".gkTabsItem.active p").each(function(){
var text = $(this).contents().text();
if(text.length> 30) {
$(this).replaceWith($(this).children("img")[0].outerHTML+text.substr(0,30)+"...");
}
});
|
j0hnik,
1 строка полезна, остальные выстрел себе в ногу. |
А так с какой строки стреляем?
$(".gkTabsItem.active p").each(function(){
var text = $(this).html();
if(text.length> 30+text.search(/>/)) {
$(this).html(text.substr(0,30+text.search(/>/))+"...");
}
});
|
в css есть фишечки, мб пригодятся.
.size {
white-space: nowrap; /* Отменяем перенос текста */
overflow: hidden; /* Обрезаем содержимое */
text-overflow: ellipsis; /* Многоточие */
}
|
Цитата:
Цитата:
|
Цитата:
|
j0hnik,
.replaceWith и .html уничтожат все обработчики, если такие были установлены, поиск по (/>/) тоже может дать сбой. |
j0hnik,
исчез 1 блок из-за search(/>/) , исчезли алерты по картинкам.
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
var size = 30,
newsContent = $(".gkTabsItem.active p"),
newsText = newsContent.text();
newsContent.find("img").on("click", function() {
alert(123);
})
/* if (newsText.length > size) {
newsContent.contents().filter(function() {
return this.nodeType == 3
}).remove();
newsContent.append(newsText.slice(0, size) + " ...")
}*/
$(".gkTabsItem.active p").each(function(){
var text = $(this).html();
if(text.length> 30+text.search(/>/)) {
$(this).html(text.substr(0,30+text.search(/>/))+"...");
}
});
});
</script>
</head>
<body>
<div class="gkTabsItem active">
<p><img alt=">" src="https://javascript.ru/forum/images/ca_serenity/misc/logo.gif" >Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum
Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum
</p>
</div>
<div class="gkTabsItem active">
<p><img src="https://javascript.ru/forum/images/ca_serenity/misc/logo.gif" >это второй блок, а где первый? Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum
Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum
</p>
</div>
</body>
</html>
|
| Часовой пояс GMT +3, время: 19:40. |