jquery.step.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. (function($) {
  2. $.fn.extend({
  3. loadStep: function(params) {
  4. var stepArr = params.steps;
  5. var $this = $(this);
  6. var createStep = function(len) {
  7. var step = '<ul class="eStep"></ul>';
  8. var $step = $(step);
  9. for (var i = 0; i < len; i++) {
  10. var stepItem = '<li class="eStep-item"></li>';
  11. $step.append(stepItem);
  12. }
  13. $this.append($step);
  14. }
  15. var createPoint = function(stepArr) {
  16. var pointWarp = '<div class="eStep--point-warp"></div>';
  17. $this.append(pointWarp);
  18. var length = stepArr.length;
  19. var everyStepLength = $this.width() / (length - 1);
  20. var everyWidth = $this.width() / length;
  21. $(stepArr).each(function(index, item) {
  22. var itemHtml = ' <span class="eStep--point-item">' +
  23. '<i class="eStep--point">' + (index + 1) + '</i>' +
  24. '<i class="eStep--text">' + item.text + '</i>' +
  25. '</span>';
  26. var $itemHtml = $(itemHtml);
  27. $itemHtml.css({
  28. 'left': index * everyStepLength + 'px',
  29. width: everyWidth + 'px'
  30. });
  31. $('.eStep--point-warp').append($itemHtml);
  32. })
  33. }
  34. var createProgress = function() {
  35. var sProgress = '<div class="eStep-progress"></div>';
  36. $this.append(sProgress);
  37. }
  38. createStep(stepArr.length - 1);
  39. createProgress();
  40. createPoint(stepArr);
  41. },
  42. setStep: function(step) {
  43. var setPoint = function() {
  44. var $stepPointItem = $('.eStep--point-item');
  45. for (var j = 0; j < $stepPointItem.length; j++) {
  46. var $point = $stepPointItem.eq(j).find('.eStep--point');
  47. if (j <= step) {
  48. $point.addClass('done');
  49. }
  50. }
  51. }
  52. setPoint();
  53. var $this = $(this);
  54. var setProgress = function() {
  55. var $progress = $this.find('.eStep-progress');
  56. var totalWidth = $this.width();
  57. var allLength = $this.find('.eStep-item').length;
  58. var everyProgressLength = totalWidth / allLength;
  59. if (step > allLength) {
  60. step = allLength;
  61. }
  62. $progress.animate({
  63. width: everyProgressLength * step
  64. });
  65. //$progress.width(everyProgressLength*step);
  66. }
  67. setProgress();
  68. }
  69. })
  70. })(jQuery)