jQuery Plugin: Excerpt Text + Show More

Language: JavaScript

(function($) {

  $.fn.textExcerpt = function(options) {
    var settings = $.extend({}, $.fn.textExcerpt.defaults, options);

    return this.each(function() {

      var $container = $(this);
      var fullText = $container.text();
      var fullTextLength = fullText.length;
      var excerpt = fullText.substring(0, settings.excerptLength);
      var showMoreText = fullText.substring(settings.excerptLength);

      if (fullTextLength > (settings.excerptLength + settings.fudge)) {

        $container.html(excerpt + ('<span class="tl_show_more_text">' + showMoreText + '</span>'));

        $('<a id="tl_show_more">' + settings.revealLabel + '</a>')
          .appendTo($container)
          .toggle(function() {
            $container.find('span.tl_show_more_text').slideDown();
            $(this).text(settings.hideLabel);
          }, function() {
            $container.find('span.tl_show_more_text').slideUp();
            $(this).text(settings.revealLabel);
          });

        $container.find('span.tl_show_more_text').hide();

      }

    });

  };

  $.fn.textExcerpt.defaults = {
    excerptLength: 700,
    fudge: 100,
    revealLabel: "Show More",
    hideLabel: "Show Less"
  };

})( jQuery );
Reveal More
Added 2 months ago by Posterized_grey_80_normal scottymac