Guest User

Untitled

a guest
Jul 19th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.85 KB | None | 0 0
  1. (function (window, $) {
  2.  
  3. var Slider = function (items, interval) {
  4. var self = this;
  5.  
  6. self.items = items;
  7. self.interval = interval;
  8. self.current = 0;
  9. self.buttons = $('<div class="slider-buttons" style="position:absolute; right: 0; bottom: 0;">');
  10. self.prevBtn = $('<a href="#">prev</a>');
  11. self.nextBtn = $('<a href="#">next</a>');
  12.  
  13. self.prevBtn.click(function (e) {
  14. e.preventDefault();
  15. self.prev();
  16. });
  17.  
  18. self.nextBtn.click(function (e) {
  19. e.preventDefault();
  20. self.next();
  21. });
  22.  
  23. self.buttons.append(self.prevBtn).append(self.nextBtn);
  24. $(items[items.length-1]).after(self.buttons);
  25.  
  26. self.timeoutID = window.setTimeout(function () {
  27. self.next();
  28. }, self.interval);
  29. };
  30.  
  31. Slider.prototype.show = function () {
  32. var self = this, fadeOutCompleteCount = 0, len = self.items.length;
  33.  
  34. self.items.fadeOut('slow', function () {
  35. fadeOutCompleteCount++;
  36. if (fadeOutCompleteCount === len) {
  37. $(self.items[Number(self.current)]).fadeIn(1000, function () {
  38. if (typeof self.timeoutID === 'number') {
  39. window.clearTimeout(self.timeoutID);
  40. delete self.timeoutID;
  41. }
  42. self.timeoutID = window.setTimeout(function () {
  43. self.next();
  44. }, self.interval);
  45. });
  46. }
  47. });
  48. };
  49.  
  50. Slider.prototype.prev = function () {
  51. var self = this, len = self.items.length;
  52.  
  53. self.current-=1;
  54. if (self.current < 0) {
  55. self.current = (len - 1);
  56. }
  57.  
  58. self.show();
  59. };
  60.  
  61. Slider.prototype.next = function () {
  62. var self = this, len = self.items.length;
  63.  
  64. self.current+=1;
  65. if (self.current > (len-1)) {
  66. self.current = 0;
  67. }
  68.  
  69. self.show();
  70. };
  71.  
  72. $.fn.slider = function (options) {
  73. var interval = options.interval || 10*1000;
  74.  
  75. new Slider($(this), interval);
  76. };
  77.  
  78. })(window, jQuery);
  79.  
  80. jQuery(document).ready(function ($) {
  81. $('.frontpage-promo-item').slider({ interval: 10*1000});
  82. });
Add Comment
Please, Sign In to add comment