Как правильно скрыть часть текста?

310
27 января 2018, 00:29

Здравствуйте. Помогите, пожалуйста, поправить ошибки в скрипте, который скрывает часть длинного текста. А именно, если в тексте есть параграфы, то он их игнорирует или скрывает после первого, или еще любым другим способом как ему угодно. Если текст идет сплошной, без параграфов, то скрипт работает правильно. И еще один момент, как научить скрипт, чтобы он скрывал текст после точки, а не в средине предложения? Спасибо!

(function($) { 
  $.fn.truncate = function(options) { 
 
    var defaults = { 
      length: 100, 
      minTrail: 10, 
      moreText: "", 
      lessText: "", 
      ellipsisText: "" 
    }; 
 
    var options = $.extend(defaults, options); 
 
    return this.each(function() { 
      obj = $(this); 
      var body = obj.html(); 
 
      if (body.length > options.length + options.minTrail) { 
        var splitLocation = body.indexOf(' ', options.length); 
        if (splitLocation != -1) { 
 
          var splitLocation = body.indexOf(' ', options.length); 
          var str1 = body.substring(0, splitLocation); 
          var str2 = body.substring(splitLocation, body.length - 1); 
          obj.html(str1 + '<span class="truncate_ellipsis">' + options.ellipsisText + 
            '</span>' + '<span  class="truncate_more">' + str2 + '</span>'); 
          obj.find('.truncate_more').css("display", "none"); 
 
          obj.append( 
            '<div class="clearboth">' + 
            '<a href="#" class="truncate_more_link">' + options.moreText + '</a>' + 
            '</div>' 
          ); 
 
          var moreLink = $('.truncate_more_link', obj); 
          var moreContent = $('.truncate_more', obj); 
          var ellipsis = $('.truncate_ellipsis', obj); 
          moreLink.click(function() { 
            if (moreLink.text() == options.moreText) { 
              moreContent.show('normal'); 
              moreLink.text(options.lessText); 
              ellipsis.css("display", "none"); 
            } else { 
              moreContent.hide('normal'); 
              moreLink.text(options.moreText); 
              ellipsis.css("display", "inline"); 
            } 
            return false; 
          }); 
        } 
      } 
 
    }); 
  }; 
})(jQuery); 
 
$().ready(function() { 
  $('.story').truncate({ 
    length: 20, 
    minTrail: 10, 
    moreText: 'Подробнее', 
    lessText: 'Скрыть', 
    ellipsisText: "[...]" 
  }); 
});
.story { 
margin: 0 0 20px 0; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div class="story">В этом блоке нет параграфов. Однажды осенью матушка варила в гостиной медовое варенье, а я, облизываясь, смотрел на кипучие пенки. Батюшка у окна читал Придворный календарь, ежегодно им получаемый. Эта книга имела всегда сильное нљ него влияние: никогда не перечитывал он ее без особенного участия, и чтение это производило в нем всегда удивительное волнение желчи. Матушка, знавшая наизусть все его свычаи и обычаи, всегда старалась засунуть несчастную книгу как можно подалее, и таким образом Придворный календарь не попадался ему на глаза иногда по целым месяцам. Зато, когда он случайно его находил, то, бывало, но целым часам не выпускал уж из своих рук. Итак, батюшка читал Придворный календарь, изредка пожимая плечами и повторяя вполголоса: «Генерал-поручик!.. Он у меня в роте был сержантом!.. Обоих российских орденов кавалер!. А давно ли мы...» Наконец батюшка швырнул календарь на диван и погрузился в задумчивость, не предвещавшую ничего доброго.</div> 
<div class="story"><p>В этом блоке есть параграфы.</p><p>Однажды осенью матушка варила в гостиной медовое варенье, а я, облизываясь, смотрел на кипучие пенки. Батюшка у окна читал Придворный календарь, ежегодно им получаемый.</p><p>Эта книга имела всегда сильное нљ него влияние: никогда не перечитывал он ее без особенного участия, и чтение это производило в нем всегда удивительное волнение желчи.</p><p>Матушка, знавшая наизусть все его свычаи и обычаи, всегда старалась засунуть несчастную книгу как можно подалее, и таким образом Придворный календарь не попадался ему на глаза иногда по целым месяцам. Зато, когда он случайно его находил, то, бывало, но целым часам не выпускал уж из своих рук.</p><p>Итак, батюшка читал Придворный календарь, изредка пожимая плечами и повторяя вполголоса: «Генерал-поручик!.. Он у меня в роте был сержантом!.. Обоих российских орденов кавалер!. А давно ли мы...» Наконец батюшка швырнул календарь на диван и погрузился в задумчивость, не предвещавшую ничего доброго.</p></div>

READ ALSO
google map запретить возвращение к маркеру

google map запретить возвращение к маркеру

ЗдравствуйтеВ шаблоне monstroid2 (wordpress), есть карты

235
Расшифровка тернарного оператора

Расшифровка тернарного оператора

Как записывается эта формула полностью?

226
Прошу помощи с js match regexp

Прошу помощи с js match regexp

Есть текст, содержащий вхождения вида TEXT1/text2-text3

174
Проблемы с импортом в NodeJS

Проблемы с импортом в NodeJS

Я пытаюсь вызвать функцию "cryptPassword" из модуля "passport" и использовать её в хуке для модели "Users" (я использую sequelize)

213