码迷,mamicode.com
首页 > Web开发 > 详细

jquery sizeChange.js 数字动态增长

时间:2016-07-14 17:24:37      阅读:672      评论:0      收藏:0      [点我收藏+]

标签:

数字动态增长

<html>
<head>
    <meta charset="utf-8"/>
</head>

<div data-speed="1500" data-from="10" data-to="50" id="count-number"  class="textd timer"></div><span></span>

<script src="https://cdn.bootcss.com/jquery/2.2.1/jquery.min.js"></script>
<script type="text/javascript" src="sizeChange.js"></script>
</html>
sizeChange.js
$.fn.countTo = function (options) {
        options = options || {};
        
        return $(this).each(function () {
            // set options for current element
            var settings = $.extend({}, $.fn.countTo.defaults, {
                from:            $(this).data(‘from‘),
                to:              $(this).data(‘to‘),
                speed:           $(this).data(‘speed‘),
                refreshInterval: $(this).data(‘refresh-interval‘),
                decimals:        $(this).data(‘decimals‘)
            }, options);
            
            // how many times to update the value, and how much to increment the value on each update
            var loops = Math.ceil(settings.speed / settings.refreshInterval),
                increment = (settings.to - settings.from) / loops;
            
            // references & variables that will change with each update
            var self = this,
                $self = $(this),
                loopCount = 0,
                value = settings.from,
                data = $self.data(‘countTo‘) || {};
            
            $self.data(‘countTo‘, data);
            
            // if an existing interval can be found, clear it first
            if (data.interval) {
                clearInterval(data.interval);
            }
            data.interval = setInterval(updateTimer, settings.refreshInterval);
            
            // initialize the element with the starting value
            render(value);
            
            function updateTimer() {
                value += increment;
                loopCount++;
                
                render(value);
                
                if (typeof(settings.onUpdate) == ‘function‘) {
                    settings.onUpdate.call(self, value);
                }
                
                if (loopCount >= loops) {
                    // remove the interval
                    $self.removeData(‘countTo‘);
                    clearInterval(data.interval);
                    value = settings.to;
                    
                    if (typeof(settings.onComplete) == ‘function‘) {
                        settings.onComplete.call(self, value);
                    }
                }
            }
            
            function render(value) {
                var formattedValue = settings.formatter.call(self, value, settings);
                $self.html(formattedValue);
            }
        });
    };
    
    $.fn.countTo.defaults = {
        from: 0,               // 开始数据
        to: 0,                 // 结束数据
        speed: 1000,           // 过渡时间
        refreshInterval: 100,  // 刷新时间
        decimals: 2,           // 小数点位数
        formatter: formatter,  // handler for formatting the value before rendering
        onUpdate: null,        // callback method for every time the element is updated
        onComplete: null       // callback method for when the element finishes updating
    };
    
    function formatter(value, settings) {
        return value.toFixed(settings.decimals);
    }



  // custom formatting example
  $(‘#count-number‘).data(‘countToOptions‘, {
    formatter: function (value, options) {
      return value.toFixed(options.decimals).replace(/\B(?=(?:\d{3})+(?!\d))/g, ‘,‘);
    }
  });
  
  // start all the timers
  function timer(){
      $(‘.timer‘).each(count);
      function count(options) {
        var $this = $(this);
        options = $.extend({}, options || {}, $this.data(‘countToOptions‘) || {});
        $this.countTo(options);
      }
  }
  timer();

 

jquery sizeChange.js 数字动态增长

标签:

原文地址:http://www.cnblogs.com/CyLee/p/5671060.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!