Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.05.2017, 00:22
Аспирант
Отправить личное сообщение для ami_moor Посмотреть профиль Найти все сообщения от ami_moor
 
Регистрация: 27.08.2013
Сообщений: 32

Обрезать тест в теге <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>
Ответить с цитированием
  #2 (permalink)  
Старый 27.05.2017, 00:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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) + " ...")
    }
Ответить с цитированием
  #3 (permalink)  
Старый 27.05.2017, 05:57
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

$(".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)+"...");
  }
});
Ответить с цитированием
  #4 (permalink)  
Старый 27.05.2017, 09:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

j0hnik,
1 строка полезна, остальные выстрел себе в ногу.
Ответить с цитированием
  #5 (permalink)  
Старый 27.05.2017, 14:04
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

А так с какой строки стреляем?
$(".gkTabsItem.active p").each(function(){
  var text = $(this).html();
  if(text.length> 30+text.search(/>/)) {
    $(this).html(text.substr(0,30+text.search(/>/))+"...");
  }
});

Последний раз редактировалось j0hnik, 27.05.2017 в 15:47.
Ответить с цитированием
  #6 (permalink)  
Старый 27.05.2017, 14:06
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

в css есть фишечки, мб пригодятся.
.size {
   white-space: nowrap; /* Отменяем перенос текста */
   overflow: hidden; /* Обрезаем содержимое */
   text-overflow: ellipsis; /* Многоточие */
 }
Ответить с цитированием
  #7 (permalink)  
Старый 27.05.2017, 14:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от j0hnik
А так с какой строки стреляем?
тоже самое
Цитата:
пиф паф ой ой ой
Ответить с цитированием
  #8 (permalink)  
Старый 27.05.2017, 15:46
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от рони Посмотреть сообщение
тоже самое
А не могли бы вы вкратце, разъяснить. Буду очень признателен
Ответить с цитированием
  #9 (permalink)  
Старый 27.05.2017, 15:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

j0hnik,
.replaceWith и .html уничтожат все обработчики, если такие были установлены, поиск по (/>/) тоже может дать сбой.
Ответить с цитированием
  #10 (permalink)  
Старый 27.05.2017, 16:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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="&gt;" 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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск