jQuery滑块没有'不要在鼠标悬停时停下来

jQuery slider doesn't stop on mouseover

本文关键字:鼠标 悬停 停下来 jQuery      更新时间:2023-10-06

我的jQuery滑块正在工作,但我不知道为什么当我悬停它时它没有停止。

我没有为此使用任何滑块插件。

这是代码。

    $(function(){
    var width = 720;
    var animationSpeed = 1000;
    var pause = 3000;
    var currentSlide = 1;
    var $slider= $('#slider');
    var $slideContainer = $slider.find('.slides');
    var $slides = $slideContainer.find('.slide');
    var interval;
    function startSlider(){
        setInterval(function(){
            $slideContainer.animate({'margin-left': '-='+width}, animationSpeed, function(){
                currentSlide++;
                if(currentSlide === $slides.length){
                currentSlide = 1;
                $slideContainer.css('margin-left', 0);
                }
            });
        }, pause);
    }
    function stopSlider(){
        clearInterval(interval);
    }

    $slider.on('mouseenter', stopSlider).on('mouseleave', startSlider);
    startSlider();
    stopSlider();

});        

如有任何帮助,我们将不胜感激。

试试这个;)

var width = 720;
var animationSpeed = 1000;
var pause = 3000;
var currentSlide = 1;
var interval;
var $slider = "";
var $slideContainer = "";
var $slides = "";
function startSlider(){
  interval = setInterval(function(){
    $slideContainer.animate({
      'margin-left': '-=' + width
    },
    animationSpeed, function(){
      currentSlide++;
      if(currentSlide === $slides.length){
        currentSlide = 1;
        $slideContainer.css('margin-left', 0);
      }
    });
  }, pause);
}
function stopSlider(){
  clearInterval(interval);
}
$(function(){
  $slider = $('#slider');
  $slideContainer = $slider.find('.slides');
  $slides = $slideContainer.find('.slide');
  $slider.on('mouseenter', stopSlider).on('mouseleave', startSlider);
  startSlider();
});

伙计,你做错了。要停止一个间隔,您需要在之前将其分配给一个变量。

  1. 创建您的间隔并将其分配给var:

    var timer=setInterval(函数(){//在这里做事});

  2. 你已经安排好了时间,现在你可以停止了!像这样:

    clearInterval(定时器);希望能帮助你:)

如果你想停止间隔,你需要这样做:

var interval = setInterval(function(){//do stuff here});
clearInterval(interval);

只需从变量前缀中删除$,它不是php,而是jquery。