Created
November 6, 2016 15:09
-
-
Save cuonghuynh/c124ec2bf12d1cf8b15aed0b9faef522 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
|---------------------------------------------- | |
| ReadMore Jquery Plugin | |
|---------------------------------------------- | |
| | |
| Created by Cuong Huynh | |
| | |
*/ | |
(function($) { | |
$.fn.readMore = function(method) { | |
var self = this; | |
var methods = { | |
init : function(options) { | |
self.readMore.settings = $.extend({}, self.readMore.defaults, options); | |
return self.each(function() { | |
var $element = $(this), // reference to the jQuery version of the current DOM element | |
element = this; // reference to the actual DOM element | |
helpers.handleReadMore($element); | |
helpers.handleJsReadMoreLink($element); | |
}); | |
}, | |
} | |
var helpers = { | |
handleReadMore: function ($element) { | |
var content = $element.html(); | |
if (content.length > self.readMore.settings.limit) { | |
var showedContent = content.substr(0, self.readMore.settings.limit); | |
var hiddenContent = content.substr(self.readMore.settings.limit, content.length - self.readMore.settings.limit); | |
var html = showedContent + '<span class="more-ellipsis">' + self.readMore.settings.ellipsis_text + '</span>'; | |
html += '<span class="more-content"><span style="display: none;">' + hiddenContent + '</span>'; | |
html += ' <a href="" class="jsReadMoreLink">' + self.readMore.settings.more_text + '</a></span>'; | |
console.log(html); | |
$element.html(html); | |
} | |
}, | |
handleJsReadMoreLink: function ($element) { | |
$element.on('click', '.jsReadMoreLink', function(event) { | |
event.preventDefault(); | |
if ($(this).hasClass('less')) { | |
$(this).removeClass('less'); | |
$(this).html(self.readMore.settings.more_text); | |
} else { | |
$(this).addClass("less"); | |
$(this).html(self.readMore.settings.less_text); | |
} | |
$(this).parent().prev().toggle(); | |
$(this).prev().toggle(); | |
return false; | |
}); | |
} | |
} | |
if (methods[method]) { | |
return methods[method].apply(self, Array.prototype.slice.call(arguments, 1)); | |
} else if (typeof method === 'object' || !method) { | |
return methods.init.apply(self, arguments); | |
} else { | |
$.error( 'Method "' + method + '" does not exist in readMore plugin!'); | |
} | |
} | |
$.fn.readMore.defaults = { | |
limit: 100, | |
more_text: 'Read More', | |
less_text: 'Show Less', | |
ellipsis_text: '...' | |
} | |
$.fn.readMore.settings = {} | |
})(jQuery); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment