(function($) { $.fn.extend({ loadStep: function(params) { var stepArr = params.steps; var $this = $(this); var createStep = function(len) { var step = ''; var $step = $(step); for (var i = 0; i < len; i++) { var stepItem = '
  • '; $step.append(stepItem); } $this.append($step); } var createPoint = function(stepArr) { var pointWarp = '
    '; $this.append(pointWarp); var length = stepArr.length; var everyStepLength = $this.width() / (length - 1); var everyWidth = $this.width() / length; $(stepArr).each(function(index, item) { var itemHtml = ' ' + '' + (index + 1) + '' + '' + item.text + '' + ''; var $itemHtml = $(itemHtml); $itemHtml.css({ 'left': index * everyStepLength + 'px', width: everyWidth + 'px' }); $('.eStep--point-warp').append($itemHtml); }) } var createProgress = function() { var sProgress = '
    '; $this.append(sProgress); } createStep(stepArr.length - 1); createProgress(); createPoint(stepArr); }, setStep: function(step) { var setPoint = function() { var $stepPointItem = $('.eStep--point-item'); for (var j = 0; j < $stepPointItem.length; j++) { var $point = $stepPointItem.eq(j).find('.eStep--point'); if (j <= step) { $point.addClass('done'); } } } setPoint(); var $this = $(this); var setProgress = function() { var $progress = $this.find('.eStep-progress'); var totalWidth = $this.width(); var allLength = $this.find('.eStep-item').length; var everyProgressLength = totalWidth / allLength; if (step > allLength) { step = allLength; } $progress.animate({ width: everyProgressLength * step }); //$progress.width(everyProgressLength*step); } setProgress(); } }) })(jQuery)