(function($) { $.fn.jTruncate = function(h) { var i = { length: 300, minTrail: 0, //minimo de palabras sobrantes para acortar, en nuestro caso nos interesa que acorte en cuanto se pase del "length" moreText: "[show more]", lessText: "[show less]", ellipsisText: "...", moreAni: "", lessAni: "", newline: true }; var h = $.extend(i, h); return this.each(function() { obj = $(this); var a = obj.html(); if (a.length > h.length + h.minTrail) { var b = a.indexOf(' ', h.length); if (b != -1) { var b = a.indexOf(' ', h.length); var c = a.substring(0, b); var d = a.substring(b); //%% modificación para que no se coma el último carácter ->(antes) var d = a.substring(b, a.length - 1); obj.html(c + '' + h.ellipsisText + '' + '' + d + ''); obj.find('.truncate_more').css("display", "none"); if (h.newline) { obj.append('
' + '' + h.moreText + '' + '
'); } else { obj.append('' + ' ' + h.moreText + '' + ''); } var e = $('.truncate_more_link', obj); var f = $('.truncate_more', obj); var g = $('.truncate_ellipsis', obj); e.click(function() { if (e.text() == h.moreText) { f.css("display", "inline"); e.text(h.lessText); g.css("display", "none"); } else { f.hide(h.lessAni); e.text(h.moreText); g.css("display", "inline"); } return false }) } } }) } })(jQuery);