/** * Jquery.rcounter.js * Version: 1.0.0 * Author: Sharifur * Inspired By Benjamin Intal * */ (function($) { 'use strict'; $.fn.rCounter = function(options) { var settings = $.extend({ duration: 20, easing: 'swing', }, options); return this.each(function() { var $this = $(this); var startCounter = function() { var numbers = []; var length = $this.length; var number = $this.text(); var isComma = /[,\-]/.test(number); var isFloat = /[,\-]/.test(number); var number = number.replace(/,/g, ''); var divisions = settings.duration; var decimalPlaces = isFloat ? (number.split('.')[1] || []).length : 0; // make number string to array for displaying counterup for (var rcn = divisions; rcn >= 1; rcn--) { var newNum = parseInt(number / divisions * rcn); if (isFloat) { newNum = parseFloat(number / divisions * rcn).toFixed(decimalPlaces); } if (isComma) { while (/(\d+)(\d{3})/.test(newNum.toString())) { newNum = newNum.toString().replace(/(\d+)(\d{3})/, '$1' + ',' + '$2'); } } numbers.unshift(newNum); } var counterUpDisplay = function() { $this.text(numbers.shift()); setTimeout(counterUpDisplay, settings.duration); }; setTimeout(counterUpDisplay, settings.duration); } // end function //bind with waypoints $this.waypoint(startCounter, { offset: '100%', triggerOnce: true }); }); } }(jQuery));