jQuery.fn.shorten = function (settings) { var config = { showChars: 100, ellipsesText: "...", moreText: "more", lessText: "less" }; if (settings) { $.extend(config, settings); } if (typeof $('#wall').data('handleMoreLink') === 'undefined') { $('#wall').on('click', '.morelink', function () { var $link = $(this); if ($link.hasClass('less')) { $link.removeClass('less'); $link.html(config.moreText); } else { $link.addClass('less'); $link.html(config.lessText); } $link.parent().prev().toggle(); $link.prev().toggle(); return false; }); $('#wall').data('handleMoreLink', true); } return this.each(function () { var $this = $(this); if (typeof $this.data('handleMoreLink') === 'undefined') { 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 + '' + config.ellipsesText + ' ' + h + '  ' + config.moreText + ''; $this.html(html); $this.find(".morecontent span").hide(); } $this.data('handleMoreLink', true); } }); };