Add Read More Link after three lines of text

Status
Niet open voor verdere reacties.

julianmurillo

Gebruiker
Lid geworden
15 jan 2018
Berichten
41
Hi allemaal

Kennen jullie een manier om een 'Add more'-link toe te voegen aan een tekst die meer dan drie regels lang is?

Ik ben deze oplossing tegengekomen, maar deze houdt alleen rekening met een max. lengte van 100 karakters:

Code:
(function($) {
	$.fn.shorten = function (settings) {
	
		var config = {
			showChars: 100,
			ellipsesText: "...",
			moreText: "more",
			lessText: "less"
		};

		if (settings) {
			$.extend(config, settings);
		}
		
		$(document).off("click", '.morelink');
		
		$(document).on({click: function () {

				var $this = $(this);
				if ($this.hasClass('less')) {
					$this.removeClass('less');
					$this.html(config.moreText);
				} else {
					$this.addClass('less');
					$this.html(config.lessText);
				}
				$this.parent().prev().toggle();
				$this.prev().toggle();
				return false;
			}
		}, '.morelink');

		return this.each(function () {
			var $this = $(this);
			if($this.hasClass("shortened")) return;
			
			$this.addClass("shortened");
			var content = $this.html();
			if (content.length > config.showChars) {
				var c = content.substr(0, config.showChars);
				var h = content.substr(config.showChars, content.length - config.showChars);
				var html = c + '<span class="moreellipses">' + config.ellipsesText + ' </span><span class="morecontent"><span>' + h + '</span> <a href="#" class="morelink">' + config.moreText + '</a></span>';
				$this.html(html);
				$(".morecontent span").hide();
			}
		});
		
	};

 })(jQuery);
 
Kan je hiermee verder.
Code:
<style>
.morecontent span { display: none; }
.morelink { display: block; }
</style>

<div class="article">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Morbi arcu ipsum, suscipit non placerat non, egestas et diam.
Donec eros mi, viverra et dictum id, vulputate vitae leo.
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
(function($) {
  $.fn.shorten = function (settings) {
    var config = {
      showChars: 60,
      ellipsesText: "...",
      moreText: "Lees meer",
      lessText: "Minder tekst"
    };
    if (settings) {
      $.extend(config, settings);
    }
    $(this).each(function() {
      var content = $(this).html();
      if (content.length > config.showChars) {
        $(this).html(
          content.substr(0, config.showChars) + 
          '<span class="moreellipses">&nbsp;' + config.ellipsesText + '</span>' + 
          '<span class="morecontent">' + 
            '<span>' + content.substr(config.showChars, content.length - config.showChars) + '</span>' + 
            '<a href="" class="morelink">' + config.moreText + '</a>' + 
          '</span>'
        );
      }
    });
    $(this).find(".morelink").click(function() {
      if ($(this).hasClass("less")) {
        $(this).removeClass("less");
        $(this).html(config.moreText);
      } else {
        $(this).addClass("less");
        $(this).html(config.lessText);
      }
      $(this).parent().prev().toggle();
      $(this).prev().toggle();
      return false;
    });
  };
})(jQuery);

$(".article").shorten();
</script>
Suc6. Have fun.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan