Advertisement
noctual

Slider

May 11th, 2021
298
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
jQuery 2.08 KB | None | 0 0
  1. (function($){
  2.     $.fn.mySlider = function(options) {
  3.  
  4.         let settings = $.extend({
  5.             'speed': 2000,
  6.             'itemSelector': '.slider__item',
  7.             'dotSelector': '.slider__dot',
  8.             'itemActiveClass': 'slider__item_active',
  9.             'dotActiveClass': 'slider__dot_active',
  10.             'nextBtnSelector': '.slider__arrow-right',
  11.             'prevBtnSelector': '.slider__arrow-left'
  12.         }, options);
  13.  
  14.         return this.each(function() {
  15.             let items = $(this).find(settings.itemSelector);
  16.             let dots = $(this).find(settings.dotSelector);
  17.             let cntSlides = items.length;
  18.             let nowSlide = -1;  
  19.            
  20.             function hidden(nowSlide){
  21.                 items.eq(nowSlide).removeClass(settings.itemActiveClass);
  22.                 dots.eq(nowSlide).removeClass(settings.dotActiveClass);
  23.             }
  24.  
  25.             function show(nowSlide){
  26.                 items.eq(nowSlide).addClass(settings.itemActiveClass);
  27.                 dots.eq(nowSlide).addClass(settings.dotActiveClass);
  28.             }
  29.  
  30.             function goTo(newSlide){
  31.                 hidden(nowSlide);
  32.                 nowSlide = newSlide;
  33.                 show(nowSlide);
  34.             }
  35.  
  36.             function next(){
  37.                 goTo(nowSlide + 1  < cntSlides ? nowSlide + 1 : 0);
  38.             }
  39.  
  40.             function prev(){
  41.                 goTo(nowSlide - 1 < 0 ? cntSlides - 1 : nowSlide - 1);
  42.             }      
  43.  
  44.             show(0);
  45.             let sliderIntervalId = setInterval(next, settings.speed);
  46.  
  47.             dots.click(function(){
  48.                 clearInterval(sliderIntervalId);
  49.                 goTo($(this).index());
  50.             })
  51.            
  52.             $(this).find(settings.nextBtnSelector).click(() => {
  53.                 clearInterval(sliderIntervalId);
  54.                 next();
  55.             });
  56.            
  57.             $(this).find(settings.prevBtnSelector).click(() => {
  58.                 clearInterval(sliderIntervalId);
  59.                 prev();
  60.             });
  61.         });
  62.  
  63.     };
  64. })(jQuery);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement