jquery Slide 计时不正常

j query Slider timing not working well

我正在使用 j 查询滑块,幻灯片自动切换运行良好,但是当我按下 "next" 或 "previous" 时,它不会重置幻灯片切换时间,所以有时它会到下一个滑块,只是让它在很短的时间内播放和更改。我该如何解决?

var slider = $('.slides img');
slider.hide();
slider.eq(0).show();
clickCount = 0;    

//autoplay

$(document).ready(function(){
    setInterval(function(){$(".SlNextBT").click();},6000);
 }) ;  

//next

$(".SlNextBT").click(function(){
     if(clickCount < slider.length)
           slider.eq(clickCount++).fadeOut(2100).hide();
     if(clickCount == slider.length)
         clickCount = 0;
      slider.eq(clickCount).fadeIn(2100).show();
 }) ; 

//previous

    $(".SlPreviousBT").click(function(){
         if(clickCount >= 0)
               slider.eq(clickCount--).fadeOut(2100).hide();                
         if(clickCount < 0)
             clickCount = slider.length-1;
          slider.eq(clickCount).fadeIn(2100).show();
        console.log(clickCount);
     }) ; 

您需要重置间隔

    var slider = $('.slides img');
    var intervalHandler = null;
    slider.hide();
    slider.eq(0).show();
    clickCount = 0;    

    //autoplay

    $(document).ready(function(){
        intervalHandler = setInterval(function(){$(".SlNextBT").click();},6000);
     }) ;  

    //next

    $(".SlNextBT").click(function(){
          clearInterval(intervalHandler);
          intervalHandler = setInterval(function(){$(".SlNextBT").click();},6000);
         if(clickCount < slider.length)
               slider.eq(clickCount++).fadeOut(2100).hide();
         if(clickCount == slider.length)
             clickCount = 0;
          slider.eq(clickCount).fadeIn(2100).show();
     }) ; 

    //previous

        $(".SlPreviousBT").click(function(){
            clearInterval(intervalHandler);
            intervalHandler = setInterval(function(){$(".SlNextBT").click();},6000);
             if(clickCount >= 0)
                   slider.eq(clickCount--).fadeOut(2100).hide();                
             if(clickCount < 0)
                 clickCount = slider.length-1;
              slider.eq(clickCount).fadeIn(2100).show();
            console.log(clickCount);
         }) ; 

一个小例子:

var intHandler = null;
var nxt = null;
var prv = null;
$(document).ready(function() {
      nxt = $('.next');
      prv = $('.prev');
      intHandler = setInterval(function() {
        nxt.click()
      }, 4000);
      nxt.click(function() {
        alert("Hello");
        clearInterval(intHandler);
        intHandler = setInterval(function() {
          nxt.click()
        }, 4000);
      });
      prv.click(function() {
      $('.log').append("Resseted timer");
      clearInterval(intHandler);
      intHandler = setInterval(function(){nxt.click()},4000);
   });

});
button {
  width: 50px;
  height: 25px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="next">NEXT</button>
<button class="prev">PREV</button>
<div class='log'>

</div>

点击prev,只有当你停止按下并经过4秒后,你才会看到带有next的提示